Я пытаюсь автоматизировать mutt на C. Для отправки письма с вложением в mutt можно использовать: echo "what_you_want_to_print_in_body" | mutt -s "Subject" -a "file_path" -- recipient@domain.com
но когда я автоматизирую то же самое с помощью этой программы на C:
#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(), если нет, то как мне продолжить автоматизацию этой задачи.
У вас отсутствует заголовок <stdlib.h>
, и, включив его, вы заметите, что компилятор сообщает вам, что библиотечная функция system()
принимает только один аргумент, строку.
Вы не пытаетесь очистить предоставленные пользователем -данные. Вводrobert@example.com"; rm -rf /; : "
(или что-то подобное )в качестве получателя не закончится хорошо. Не делай этого.
Проверка ввода и предотвращение эксплойтов с помощью system()
при использовании данных, предоставленных пользователем -, затруднены .
Связанные:https://xkcd.com/327/