Cを使用してmuttを自動化中にエラーが発生しました。

Cを使用してmuttを自動化中にエラーが発生しました。

Cでmuttを自動化しようとしています。 muttから添付ファイルを含むメールを送信するには、次のものを使用できます。ただし、このCプログラムを使用して同じタスクを自動化する場合:echo "what_you_want_to_print_in_body" | mutt -s "Subject" -a "file_path" -- [email protected]

#include<stdio.h>
int main()
{
char echo_message[1000];
char path[1000];
char subject[1000];
char recepient[1000];

printf("Enter your mail message: ");
gets(echo_message);
printf("Enter the path: ");
gets(path);
printf("Enter the subject: ");
gets(subject);
printf("Enter the recipient address: ");
gets(recepient);

system("echo \"%s\" | mutt -s \"%s\" -a \"%s\" -- \"%s\"", &echo_message, &subject, &path, &recepient);

return 0;
}

エラーメッセージが表示されます。

Can't stat %s: No such file or directory
%s: unable to attach a file.

ここでこの質問をする理由は、私の system() スクリプトが動作するかどうか、そうでない場合は、このタスクをどのように自動化するかに興味があるからです。

答え1

ヘッダーが欠落しており、これを含めると、コンパイラはライブラリ関数が文字列である単一の引数のみを取ると<stdlib.h>知らせることがわかります。system()

ユーザー提供のデータを削除しようとしませんでした。[email protected]"; rm -rf /; : "受信者(または同様のもの)として入力すると、うまくいきません。これをしないでください。

system()ユーザー提供のデータ使用時の入力検証と悪用防止硬い

関連:https://xkcd.com/327/

関連情報