邮件发送,无尽的501错误。TCP发送邮件解决方案
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
先贴上错误信息,便于搜索引擎采集,也送给遇到此问题的技术朋友们。
smtp 501 Syntax error (no parameters allowed) (#5.5.4)
背景描述:
使用TCP发送邮件,在使用新浪邮箱进行smtp发送邮件时报出该错误(其他邮箱可能也存着该问题),QQ邮箱无该问题。
========================================================
发送邮件其实很简单,对于像鄙人这种极限追求精简的人来说,肯定不乐意使用第三方邮件插件。使用方式、结构、代码中的流程,不一定符合本人的开发习惯。故此自己通过TCP编写发送邮件的实例,源码地址:https://gitee.com/coodyer/Coody-Framework/tree/original/coody-mail
以上截图是一次smtp发送过程抓包情况,实际上只需要建立连接,然后遵循以上规范发送相应的TCP报文即可。
代码如图(修复后)(可直接上码云下载源代码):
过去一直使用腾讯邮箱,然当我更换新浪邮箱的时候,抛出了让本人非常无语的错误,无尽的501错误。
smtp 501 Syntax error (no parameters allowed) (#5.5.4)
从错误来看,错误码是501,而细分下去的错误是5.5.4
通过查阅SMTP错误码描述来看:
501 5.5.4 | Invalid Address | 不合法的IP地址 |
若收信端邮件服务器是MS Exchange Server 5.5, 2000, 2003而收到此错误讯息时, | 请与收信端邮递员联络并附上http://support.microsoft.com/kb/291828.将Exchange Server予以修正。 |
不合法的IP地址,鄙人再三确认,发信的host没写错,smtp.sina.com。去新浪邮箱查看发信地址,确信是smtp.sina.com无误。
而发送邮件时响应内容如下:
220 smtp-2-194.smtpsmail.fmail.yf.sinanode.com ESMTP 250-smtp-2-194.smtpsmail.fmail.yf.sinanode.com 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-STARTTLS 250 8BITMIME 250 smtp-2-194.smtpsmail.fmail.yf.sinanode.com Exception in thread "main" org.coody.framework.mail.exception.MailException: 邮件服务器初始化失败:250 smtp-2-194.smtpsmail.fmail.yf.sinanode.com at org.coody.framework.mail.sender.EmailSender.init(EmailSender.java:57) at org.coody.framework.mail.sender.EmailSender.<init>(EmailSender.java:34) at org.coody.framework.mail.sender.EmailSender.main(EmailSender.java:129)
于是使用QQ邮箱发送一遍邮件,走查正常的响应内容:
220 smtp.qq.com Esmtp QQ Mail Server 250 smtp.qq.com 220 Ready to start TLS 334 VXNlcm5hbWU6 334 UGFzc3dvcmQ6 235 Authentication successful 250 Ok 250 Ok 354 End data with <CR><LF>.<CR><LF> 250 Ok: queued as
发现第一行,
QQ邮箱:220 smtp.qq.com Esmtp QQ Mail Server
新浪邮箱:220 smtp-2-194.smtpsmail.fmail.yf.sinanode.com ESMTP
这是我们在建立socket连接后,发送HELO(EHLO)前服务器返回的信息。
通过测试发现,原因很简单,当我们连上socket(smtp)发信服务器后
服务器重新指定了特定的esmtp地址(或者对我们来说,叫做别名更合适吧)
故此,我们发送HELO(EHLO)时,键入的smtp,必须是服务器指定的esmtp标识
于是:
不出意外,当我们看到了 250 ok queue id 85626825952741 的响应,结果并没有太大意外。我们成功收到了邮件
====================================
注:鄙人并不了解邮件服务器的协议规范,纯属跟随tcp包进行模拟,如有解说不正确的地方,专业人员可指出并修改。鄙人只是苦于在网上找不到相关技术资料,故此将鄙人的解决方案记录在此,送给碰到此问题的朋友们。
作者:Coody
Git地址:https://gitee.com/coodyer
版权:©2014-2020 Test404 All right reserved. 版权所有
反馈邮箱:644556636@qq.com
反馈群:Java泛太平洋研究中心 218481849
- asp.net发送邮件代码(错误0x80040217和530的解决方案)
- maven项目(错误二) spring发送邮件报“com.sun.mail.smtp.SMTPAddressFailedException: 553 5.7.1”的解决方案
- C# 发Domino邮件 报错误 Password or other security violation for database 的解决方案
- JavaMail发送邮件时常见错误
- “邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217. The transport error code was 0x80040217. The server response was not available
- 使用System.Web.Mail发送Mail的错误解决方案
- PHP发送邮件错误
- 使用eclipse发送邮件错误
- android自己获取并保存错误日志(可以通过邮件发送到自己邮箱)
- myeclipse连接SQL2005以及碰到TCP/IP端口连接错误解决方案
- 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)
- python 发送邮件错误解决:smtplib.SMTPException SMTP AUTH extension
- 【解决方案】qq企业邮箱用outlook能发邮件不能收邮件,错误syntax error
- phpmailer邮件发送 错误 :SMTP Error: Could not authenticate.
- flask-mai发送邮件503,553错误
- openfire+smack 简单的 发送消息 demo及各种错误解决方案。
- PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送
- Sharepoint 2007 与Gmail SMTP 集成 发送邮件以及其他解决方案
- Flask-mail发送邮件遇到的错误总结,以及成功后源码
- Zimbra安装成功后,邮件发送失败!!急!!发生错误 (mail.TRY_AGAIN),原因不详。