Smtp клиент — от и до не отправлять

У меня есть клиент smtp, встроенный в c ++, где я могу отправлять электронные письма на мою тестовую учетную запись mailtrap.
Заголовки отправлены, и электронная почта прибывает просто отлично.

Моя проблема в том, что поле, которое указывает от / до, пусто — как показано на скриншоте

введите описание изображения здесь

Я отправляю заголовок с

write_command("MAIL FROM: <[email protected]>");
write_command("RCPT TO: <[email protected]>");

Я сделал суть с моим полным кодом клиента SMTP

https://gist.github.com/anonymous/7bb13de7f044bcb5d07d0e6a9d991ea9

Я звоню из моего main() функция

с

 Smtp smtp_client = Smtp();
smtp_client.new_connection("smtp.mailtrap.io", 25);
smtp_client.auth_login("username", "password");
smtp_client.sendmail();
smtp_client.close_connection();

спасибо, что присмотрелись

5

Решение

Мне удалось заставить поля появляться, редактируя ваши sendmail функционировать немного:

void sendmail()
{
write_command("MAIL FROM: <[email protected]>");
write_command("RCPT TO: <[email protected]>");

write_command("DATA");

std::string data;
data.append("MIME-Version: 1.0\r\n");
data.append("From: <[email protected]>\r\n");
data.append("To: <[email protected]>\r\n");
data.append("Subject: Welcome\r\n");
data.append("Date: Fri, 29 Dec 2017 09:30:00 -0400\r\n");
data.append("\r\n"); //this seems to matter
data.append("This is a test");
data.append("\r\n.");
write_command(data);

write_command("QUIT");
}

Я поместил все данные в строку и отправил в одной записи.

Что (по-видимому) имеет значение:

  1. не начинайте раздел данных с пустой строки;
  2. добавить пустую строку перед текстом сообщения.

Я также отредактировал ваш write_command, это не относится к вашей проблеме, но я предлагаю вам не копировать строку в буфер, а вместо этого напрямую использовать строку:

    //char command_buffer[255];
//strcpy(command_buffer, command.c_str());
//n = write(sockfd,command_buffer,strlen(command_buffer));
n = write(sockfd,command.c_str(),command.length());
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]