尝试使用 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/

相关内容