如何通过需要验证的邮件服务器发送邮件?

在.NET Framework 推出以后,大家一直在为这个问题而伤脑筋。的确,在1.0的时候,我们是不能实现此方案的,大部分人选择了使用Socket底层自己重写。但是,在1.1的时候,其实Microsoft已经提供了验证功能了,只是一直没有公开。

恰好我在读.Text 0.95的源代码的时候找到了这段代码,感觉应该提供给大家咧嘴笑脸

private void Page_Load(object sender, System.EventArgs e)
{
       MailMessage mail = new MailMessage();
       mail.To = “[email protected]”;
       mail.From = “[email protected]”;
       mail.Subject = “this is a test email.”;
       mail.Body = “Some text goes here”;
       mail.Fields.Add(“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate”, “1”); //basic authentication
       mail.Fields.Add(“http://schemas.microsoft.com/cdo/configuration/sendusername”, “my_username_here”); //set your username here
      mail.Fields.Add(“http://schemas.microsoft.com/cdo/configuration/sendpassword”, “super_secret”); //set your password here

    SmtpMail.SmtpServer = “mail.mycompany.com”;  //your real server goes here
    SmtpMail.Send( mail );
}

参考资料:

http://vaultpub.sourcegear.com/VaultService/VaultWeb/Blame.aspx?repid=7&path=$/Dottext/Dottext.Framework/Email/SystemMail.cs&version=1&includedversions=20 (用户名及密码为guest)

http://www.systemwebmail.com/faq/3.8.aspx

打赏作者

“如何通过需要验证的邮件服务器发送邮件?”的77个回复

  1. To sam1111,对不起,mail.joycode.com在做试验中,所以发往joy @joycode.com的信箱全部有问题,请发往joy @china.com

  2. 7456~~~
    我花了好长时间,用TcpClient写出来了~~
    支持验证,现在一看~~
    呜呜,做了无用功阿~~

  3. Pingback: sunhai
  4. Pingback: sunhai
  5. 真是太好了,本来还打算自己写个SmtpMail的类,看来现在不用了。在此表示感谢

  6. 而且CDO只能运行在2000或者更高上吧,如XP就不支持了。
    对于jmail更是垃圾得一塌糊涂,宁愿自己用SOCKET写过

  7. 说的到是很好 可是 我现在的程序在本地上是好用的 但是 移值到托管的环境里不好用 也就是说他们那里用的是windows2003服务器 但是 没有安装smtp服务 我这个用asp.net下的类写的程序就不好用 我想找一个中继服务器主机 但是 都有验证 唉 我想手动用vb.net写底层构构怎么写~ 各位大哥请指教 要是还有别的好办法也可以 谢谢大哥哥们了

  8. 我发一个邮件好几次 老是退回来啊 系统消息是说你的邮件在队列中处理时间过长

  9. "因为配置类型不正确,系统无法开始服务器进程。请检查用户名和密码。"

    请问这是什么回事,在另外一台机器同样的代码却没有这个问题。

  10. 感激,感激,已经可以用了,就是不知道这样会有什么难以预料的问题?

    还请大哥帮忙啊!

  11. 靠,我也出现了"System.Web.Mail.MailMessage并不包含对Fields的定义"这个报错,可我导入<% @Import Namespace = "System.Web.Util" %> 了,可还是……,郁闷……………………
    各位大虾邦小弟一把!

  12. 550 not local host cnicp.net, not a gateway

    各位大侠,帮看一下,这个错误是指什么?

  13. “/”应用程序中的服务器错误。
    ——————————————————————————–

    邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc15。服务器响应为 not available
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Runtime.InteropServices.COMException: 邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc15。服务器响应为 not available

    源错误:

    行 179:
    行 180: SmtpMail.SmtpServer="smtp.728.cn"; //your real server goes here
    行 181: SmtpMail.Send(mail);
    行 182:
    行 183: }

    源文件: m:product_oasendmail.aspx.cs 行: 181

  14. 楼上的,我报的错为:
    ::System.Web.HttpException: 未能访问“CDO.Message”对象。 —> System.Reflection.TargetInvocationException: 调用的目标发生了异常。 —> System.Runtime.InteropServices.COMException (0x80040211): 邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available — 内部异常堆栈跟踪的结尾 — at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)

    ,后来发现需要验证时,如果你的服务器有多个域,需要在用户名后将 @servername带全.

  15. 还是报错:
    邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available

  16. “/”应用程序中的服务器错误。
    ——————————————————————————–

    邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc15。服务器响应为 not available
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Runtime.InteropServices.COMException: 邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc15。服务器响应为 not available

    源错误:

    执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

    堆栈跟踪:

    [COMException (0x80040211): 邮件无法发送到 SMTP 服务器。传输错误代码为 0x800ccc15。服务器响应为 not available
    ]

    [TargetInvocationException: 调用的目标发生了异常。]
    System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) +0
    System.RuntimeType.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters) +473
    System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) +58

    我把代码传到买来的空间可以发送邮件,但在本地老是提示以上错误,各位达人有什么提示,谢谢!

  17. 邮件无法发送到 SMTP 服务器。传输错误代码为 0x80040217。服务器响应为 not available
    我的也是呀.好晕呀

  18. Pingback: 穿石水滴
  19. Pingback: 将飞

评论已关闭。