先贴上错误信息,便于搜索引擎采集,也送给遇到此问题的技术朋友们。

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.www.baihua178.cn 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.<www.feishenbo.cn t>(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 www.lafei6d.cn
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标识

220 smtp-2-194.smtpsmail.fmail. www.qiaoheibpt.com .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 "

www.huizhonggjpt.cn

" org.coody.framework.mail.exception.MailException: 邮件服务器初始化失败:250 smtp-2-194.smtpsmail.fmail.yf.sinanode.com
  
  at org.coody.framework.mail.sender.EmailSender.init(www.jiuhuaylgw.cn EmailSender.java:57)
  
  at org.coody.framework.mail.sender.EmailSender.<init>(www.xinyueylzc.cn EmailSender.java:34)
  
  at org.coody.framework.mail.sender.EmailSender.main(www.tengyao3zc.cn EmailSender.java:129)
  
  于是使用QQ邮箱发送一遍邮件,走查正常的响应内容:
  
  220 smtp.qq.com Esmtp www.lafei6v.cn  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>.www.shentuylzc.cn <CR><LF>
  
  250 Ok: queued as
  

于是:

不出意外,当我们看到了 250 ok queue id 85626825952741 的响应,结果并没有太大意外。我们成功收到了邮件

====================================

注:鄙人并不了解邮件服务器的协议规范,纯属跟随tcp包进行模拟,如有解说不正确的地方,专业人员可指出并修改。鄙人只是苦于在网上找不到相关技术资料,故此将鄙人的解决方案记录在此,送给碰到此问题的朋友们。

邮件发送,无尽的501错误。TCP发送邮件解决方案的更多相关文章

  1. TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

  2. redmine 配置邮件发送为async后,不能发送邮件(转载)

    通过参考:http://www.oschina.net/question/2005703_16688 之前configuration.yaml文件中email的相关配置如下: production: ...

  3. ThinkPHP邮件发送S(Smtp + Mail + phpmailer)

    三种邮件发送介绍:(Smtp,Mail以及phpmailer)ThinkPhp 框架下开发. 邮件发送配置先前准备(用该账号做测试用):(这里用新浪邮箱服务器)将自己的新浪邮箱开通 POP3/SMTP ...

  4. spring 5.x 系列第20篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置类为com.heibaiyin ...

  5. spring 5.x 系列第19篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置文件为springApplic ...

  6. php邮件发送 phpmailer

    首先要安装phpmailer开源项目. 将class.phpmailer.php转移到php文件夹下, 编写代码: <?php require("class.phpmailer.php ...

  7. 利用System.Net.Mail和多线程实现邮件发送

    对于邮件发送,一般来说,程序会响应超过1秒,这样对于用户体验来说,让用户等待的时间过长,而且发送的邮件越多时间就越长,所以这里我利用了线程的来处理邮件发送这种耗时的工作,废话不多说,直接上代码 pri ...

  8. 利用phpmailer类邮件发送

    <?php require("class.phpmailer.php"); //下载的文件必须放在该文件所在目录 $mail = new PHPMailer(); //建立邮 ...

  9. IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)

    邮件发送功能总结        第一部分 背景   一.使用场景 (1)注册验证    注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的 ...

随机推荐

  1. FULLTEXT INDEX全文索引

    给现有的wxinfo表的sourceUrl 字段创建全文索引 ALTER TABLE wxinfo ADD FULLTEXT INDEX sourceUrl (sourceUrl) 创建全文索引前: ...

  2. 032-PHP中关于数组排序的usort()函数

    <?php function re($a, $b) { return ($a < $b) ? 1 : -1; } $x = array(1, 3, 2, 5, 9); usort($x, ...

  3. 【SQL必知必会笔记(2)】检索数据、排序检索数据

    上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...

  4. HZNU-ACM寒假集训Day11小结 贪心

    1.刘汝佳紫书区间问题三大情况 1.选择不相交区间 贪心策略:一定要选择第一个区间 2.区间选点问题 贪心策略:取最后一个点 3.区间覆盖问题: n个闭区间,选择尽量少的区间覆盖一条指定线段[s,t] ...

  5. Python PIP包管理器

    版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...

  6. ubuntu在虚拟机下的安装 ~~~ Hadoop的安装及配置 ~~~ Hdfs中eclipse的安装

     前言 Hadoop是基于Java语言开发的,具有很好跨平台的特性.Hadoop的所要求系统环境适用于Windows,Linux,Mac系统,我们推荐选择使用Linux或Mac系统.而Linux系统则 ...

  7. 51nod 1006:最长公共子序列Lcs

    1006 最长公共子序列Lcs 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). ...

  8. vue插件汇总

    浏览了一下,确实不错,另补充以下几个插件(欢迎大家将自己使用的插件留言给我,共同进步): vue-orgchart  可编辑,可导出 JSON 的树形组织图 的VUE组件 viewerjs  强大的图 ...

  9. Mobile-H5网页快速滚动和回弹

    现在很多for Mobile的HTML5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼. 要实现这个效果很简单,只需要加一行css代码即可: -webkit-overflow-sc ...

  10. Android自定义View——简单实现边缘凹凸电子票效果

        View继承LinearLayout,在View的上下边缘画出白色的圆形即可,这里只要计算出圆的个数和圆的循环规律即可,下面请看分析 我们取卡片的前2个凹凸来看,将其分为四部分,并且两部分为循 ...