邮件发送,无尽的501错误。TCP发送邮件解决方案

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

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包进行模拟,如有解说不正确的地方,专业人员可指出并修改。鄙人只是苦于在网上找不到相关技术资料,故此将鄙人的解决方案记录在此,送给碰到此问题的朋友们。

原文地址:https://www.cnblogs.com/laobeipai/p/12116170.html

时间: 2024-10-28 22:09:44

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

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

通过参考:http://www.oschina.net/question/2005703_16688 之前configuration.yaml文件中email的相关配置如下: production: email_delivery: delivery_method: :async_smtp smtp_settings: address: smtpcom.263xmail.com port: 25 domain: '263xmail.com' authentication: :login user_

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

三种邮件发送介绍:(Smtp,Mail以及phpmailer)ThinkPhp 框架下开发. 邮件发送配置先前准备(用该账号做测试用):(这里用新浪邮箱服务器)将自己的新浪邮箱开通 POP3/SMTP服务: 新浪邮箱中  :设置->账户下面的 POP3/SMTP服务 选择开通(然后一步一步完成开通). 客户端html代码: 1 <body> 2 <!--<h1>发送信息测试</h1>--> 3 <div>请输入发送地址(1):<inp

Spring温习--邮件发送实现

Spring对邮件发送支持的很好,我们只要配置好邮件发送器,写好邮件发送具体操作类的方法,那么实现就不是很难的事,不过这个过程中经常会出现这样或那样的错误,所以待讲完本篇后我会总体总结下spring邮件发送容易发生的错误及解决办法 关于邮件发送,不外乎有这么几种情况,一种是纯文本的发送,一种是HTML形式的发送,一种就是发送时带有附件,一种就是发送时采取的事群发,针对这几个我将一一来讲下,我的代码中将第一中归为一大类,后面三种归为一代类,所以将会出现两种配置文件 第一大类邮件发送[纯文本发送]

信息图:营销人员应该知道的邮件发送黄金时间段

随着国内邮件营销的关注热度逐渐升温,市场营销人员开始把注意力投射到邮件发送的各个细节中.影响邮件打开率的因素甚多,不仅包括了是否吸睛的标题.个性化的内容.清晰的排版等,另外,邮件发送时间点也是极其重要的.那么,何时发送邮件才能让收件人更容易看到呢?为此,Webpower中国区结合了GetResponse关于邮件发送时间的一项数据调查展开论述,分析邮件发送的黄金时间点. 无论对于短信.邮件类的传统营销渠道或是诸如微信等新媒体营销渠道,人们的阅读欲望往往存在于接收信息后一段较短的时间内.根据数据显示

.Net实现简单的邮件发送

使用winform写了一个小程序,实现简单的邮件发送功能,部分代码如下: //异步发送邮件: 1 //发送按钮 2 private void btn_Send_Click(object sender, EventArgs e) 3 { 4 //创建MailMessage对象 5 MailAddress from = new MailAddress("[email protected]"); 6 MailAddress to = new MailAddress("[email 

php 邮件发送

<?php header("Content-Type:text/html;charset=utf-8"); require("./PHPMailer/class.phpmailer.php"); //下载的文件必须放在该文件所在目录 $mail = new PHPMailer(); //建立邮件发送类 $address ="[email protected]"; $mail->IsSMTP(); // 使用SMTP方式发送 $mail

解决阿里云邮件发送不能使用25端口问题

本地测试发邮件功能很流畅,部署到阿里云上以后发现总是NOT FIND,这就很奇怪.开始以为是url写错了导致的,检查N多遍发现完全一毛一样的.后来各种百度,发现是因为阿里云禁用了25端口导致的.查看各种资料,解决的办法五花八门.试了几种解决方案,都解决了问题.现在整理如下:(不用去尝试申请解禁25端口的,可以很认真负责的告诉你,完全没有卵用) 首先,是阿里大大给的官方的解决方案,用SMTP发送邮件:代码如下 # -*- coding:utf-8 -*- import urllib, urllib

c#邮件发送

1.所用工具和资源:VS2012   在.NET Frameword类库中提供SmtpClient类(System.NET.Mail) 2.运行截图 3.具体代码实现 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Syst

利用phpmailer类邮件发送

<?php require("class.phpmailer.php"); //下载的文件必须放在该文件所在目录 $mail = new PHPMailer(); //建立邮件发送类 $address = "接收方邮箱"; //接收方地址 $mail->IsSMTP(); //使用SMTP方式发送 $mail->Host = "发送者邮箱smtp"; //您的企业邮局域名 $mail->SMTPAuth = true; /