私はフィールドがあなたのsendmail
機能ビットを編集して、表示されるように管理し
外観を仮止め用
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();
おかげで私のmain()
機能からそれを呼んでいる:
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つの文字列で送信し、1回の書き込みで送信します。
何(明らかに)問題:
- 空行とデータセクションを開始しません。
- メッセージテキストの前に空白行を追加します。
私はまた、あなたの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());
私は私が作ったと思いますそれ。私は答えを編集しました。 –