使用MS Visual C ++和Boost asio,我正在尝试添加使用SMTP协议向应用程序发送电子邮件的功能。
当我尝试验证连接时出现问题。以下是假设尝试连接到1& 1提供商的服务器中的帐户的情况的快照,该服务器使用自己的名为“nemesis”的服务器。
( S :服务器响应和 C :是客户端命令)用于测试目的,我们假设尝试从帐户sender @ mysite发送邮件。 com to target@mysite.com
C: connect with hostname <smtp.1and1.es> and port <587>
S: 220 smtp.1and1.es (mreu1) Welcome to Nemesis ESMTP server
C: EHLO mysite.com
S: 250-smtp.1and1.es
S: 250-STARTTLS
S: 250-AUTH LOGIN PLAIN
S: 250-AUTH=LOGIN PLAIN
S: 250-PIPELINING
S: 250-SIZE 120000000
S: 250 HELP
C: AUTH LOGIN
S: 504 Unknown authentication mechanism
据我所知,服务器为用户提供了两种身份验证模式:LOGIN
和PLAIN
,我们尝试使用前者(最常用的模式)。
据说,从这一点来说,服务器应该回答用户名和密码的请求。一些如:
S: 334 VXNlcm5hbWU6
C: avlsdkfj <- Usename (base-64 encoded)
S: 334 UGFzc3dvcmQ6
C: lkajsdfvlj <- Password (base-64 encoded)
我尝试了auth login
(小写)和auth=login
命令但没有成功。
我认为一旦获得,访问过程的其余部分是标准的。就是说一些:
C: "MAIL FROM:<....>\r\n"
S: 250 .....
C "RCPT TO: ..\r\n"
S: 250 ...
C: "DATA\r\n"
S: 354 ...
C: bla, bla, bla <- message- body
C: \r\n.\r\n
S: 250 ...
C: "QUIT\r\n"
S: 221 ...
答案 0 :(得分:0)
C: AUTH LOGIN
而不是
C: AUTH LOGIN\r\n
请注意,在Windows中使用Telnet时,不需要附加\r\n
。
发送编码的用户名和密码时请注意使用相同的附录。
顺便说一句,除了收到的评论之外,Erwin Hoffmann SMTP Authentication Tutorial的页面对我来说是一个帮助。