Smtp 客户端 - 从和不发送
Smtp client - from and to not send
我有一个用 C++ 构建的 smtp 客户端,我可以在其中向我的测试 mailtrap 帐户发送电子邮件。
header 已发送,电子邮件正常到达。
我的问题是,指示 from/to 的字段为空 - 如屏幕截图所示
我用
发送 header
write_command("MAIL FROM: <foo@bar.de>");
write_command("RCPT TO: <foo@bar.de>");
我用我的 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();
感谢关注
我设法使这些字段出现,稍微编辑一下您的 sendmail
函数:
void sendmail()
{
write_command("MAIL FROM: <foo@bar.de>");
write_command("RCPT TO: <foo@bar.de>");
write_command("DATA");
std::string data;
data.append("MIME-Version: 1.0\r\n");
data.append("From: <foo@bar.de>\r\n");
data.append("To: <foo@bar.de>\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");
}
我把整个数据放在一个字符串中,并在一次写入中发送。
什么(显然)重要:
- 不要以空行开始数据部分;
- 在消息文本前添加一个空行。
我也编辑了你的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());
我有一个用 C++ 构建的 smtp 客户端,我可以在其中向我的测试 mailtrap 帐户发送电子邮件。 header 已发送,电子邮件正常到达。
我的问题是,指示 from/to 的字段为空 - 如屏幕截图所示
我用
发送 headerwrite_command("MAIL FROM: <foo@bar.de>");
write_command("RCPT TO: <foo@bar.de>");
我用我的 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();
感谢关注
我设法使这些字段出现,稍微编辑一下您的 sendmail
函数:
void sendmail()
{
write_command("MAIL FROM: <foo@bar.de>");
write_command("RCPT TO: <foo@bar.de>");
write_command("DATA");
std::string data;
data.append("MIME-Version: 1.0\r\n");
data.append("From: <foo@bar.de>\r\n");
data.append("To: <foo@bar.de>\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");
}
我把整个数据放在一个字符串中,并在一次写入中发送。
什么(显然)重要:
- 不要以空行开始数据部分;
- 在消息文本前添加一个空行。
我也编辑了你的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());