我正在尝试在 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()
使用用户提供的数据时进行输入验证并防止漏洞利用难的。