为什么有的SMTP服务器可以发邮件而有的不可以?

左直拳
博客专家认证
2006-05-31 02:54:34
同样的一段代码,有的SMTP服务器可以发邮件而有的就不行。

代码如下:
MailMessage objMail = new MailMessage();
objMail.From = showName + "<" + fromMail + ">";
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2;
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = userName;
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = password;
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/languagecode"] = 0x0804;
objMail.To = toMail;
objMail.Subject = title;
objMail.Body = content;
objMail.BodyFormat = format;
objMail.Priority = MailPriority.Normal;//优先级
objMail.BodyEncoding = Encoding.UTF8;

SmtpMail.SmtpServer = smtpserver;
SmtpMail.Send(objMail);

对于163.com,tom.com,21cn.net这样的著名邮箱,发送没有问题;但如果用公司租用的企业邮箱(中国万网的,邮箱后缀使用公司自己的域名)就不行。

错误提示:
邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc6a。服务器响应为

451 Requested action aborted: local error in processing

怀疑是不是企业邮箱所在的SMTP服务器做了什么限制,可是用outlook发送又没问题,配置也与163、21cn的没什么两样。

谁能告诉俺?
...全文
943 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
左直拳 2006-06-08
  • 打赏
  • 举报
回复
如果是帐户和密码错误,报的应该是
邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc15。服务器响应为 not available
farwy 2006-06-05
  • 打赏
  • 举报
回复
一定要确定邮件服务器的SmtpMail.SmtpServer,以及用户名,密码,我曾经因为写错一点而报这个错!
左直拳 2006-06-01
  • 打赏
  • 举报
回复
自己顶一下
左直拳 2006-05-31
  • 打赏
  • 举报
回复
220-W E L C O M E T O H I C H I N A S M T P S E R V I C E !
220 mxvip25.hichina.com ESMTP server (quarkmail server - version 1.2.1) ready at
Wed, 31 May 2006 18:25:29 +0800
EHLO LOCALHOST
250-mxvip25.hichina.com Hello LOCALHOST
250-SIZE 20971520
250-8BITMIME
250-PIPELINING
250-AUTH=LOGIN
250-AUTH LOGIN
250 HELP
左直拳 2006-05-31
  • 打赏
  • 举报
回复
不好意思,我还不会用TELNET。

现在 telnet mxvip25.hichina.com 25,出现以下结果

220-W E L C O M E T O H I C H I N A S M T P S E R V I C E !
220 mxvip25.hichina.com ESMTP server (quarkmail server - version 1.2.1) ready at
Wed, 31 May 2006 18:06:29 +0800
liujiwe79 2006-05-31
  • 打赏
  • 举报
回复
可能TCPlink没有连上。
先TELNET服务器一下。看对方是否允许你连接,并且连接是否成功
左直拳 2006-05-31
  • 打赏
  • 举报
回复
可是,代码里
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = userName;
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = password;
objMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
已经写上帐号、密码,指明服务器需要认证了。
flyfootball 2006-05-31
  • 打赏
  • 举报
回复
应该你们公司租用的企业邮箱的服务器做了安全登陆方面的限制,就是说你可以用outlook发出去,因为它通过了它的安全认证(要有帐号和密码才让你发)
左直拳 2006-05-31
  • 打赏
  • 举报
回复
TELNET两种SMTP服务器结果都一样,如下

正在连接到smtp.163.com...不能打开到主机的连接, 在端口 23: 连接失败

另外,我发送并不频繁,只发了一封。
dgrwang 2006-05-31
  • 打赏
  • 举报
回复
可能TCPlink没有连上。先TELNET服务器一下。看对方是否允许你连接。
另外如果邮件发送过于频繁的话,有些smtp服务器会视为邮件攻击.因此拒绝你的服务。


111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧