чтение ответа msmtp с терминала - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь отправить электронное письмо с помощью SMTP-клиента msmtp в Linux из кода C ++. Используя приведенный ниже код, я могу успешно отправить электронное письмо. Если электронная почта не удалась, информация об ошибке отображается на терминале, как показано на изображении терминала ниже.

Я хочу знать, как я могу прочитать сообщение об ошибке, которое выводится на терминал с использованием кода C ++ на Linux?.

int sendmail(const char *to, const char *from, const char *subject, const char *message)
{
	int retval = -1;
	std::string command("/usr/bin/msmtp -t");
	
	try{

		FILE *mailpipe = popen(command.c_str(), "w");
		if (mailpipe != NULL) {
			fprintf(mailpipe, "To: %s\n", to);
			fprintf(mailpipe, "From: %s\n", from);
			fprintf(mailpipe, "Subject: %s\n\n", subject);
			fwrite(message, 1, strlen(message), mailpipe);
			fwrite(".\n", 1, 2, mailpipe);
			retval = pclose(mailpipe); // returns 0 on successful mail sent. else greater than 0 will be given.
		 }
		 else {
			 perror("Couldn't start command. Make sure msmtp installed and configured properly");
		 }
	}
	catch(exception& e)
	{
		cout<<"Error: ";
	}
	 
     return retval;
}

enter image description here

...