zoukankan      html  css  js  c++  java
  • .NET异步发邮件的一个BUG

    我们先来看同步发送邮件的代码

    代码
    SmtpClient _SmtpClient = new SmtpClient();
    _SmtpClient.Host
    = "邮件服务器";
    _SmtpClient.Credentials
    = new NetworkCredential("用户名", "密码");

    MailMessage message
    = new MailMessage();
    message.From
    = new MailAddress("hamptest@hampoo.com", "发送人", Encoding.GetEncoding(936));
    message.To.Add(
    "tianhu.jin@hampoo.com"); //这是个正确的地址
    message.To.Add("dayan.qiu@hampoo.com"); //这是个正确的地址
    message.To.Add("jieyuan.jin@hampoo.com");//这是个无效的地址
    message.Subject = "111";
    message.Body
    = "222";

    //同步发送
    _SmtpClient.Send(message);

    一共三个邮件接收人,第三个是无效的邮件地址。

    执行后,会抛出一个异常:不允许使用邮箱名称。 服务器响应为: RP:RDN http://www.ipmotor.com/smtp_err.htm

    但是其它两个邮件接收人依然会收到该封邮件,如下图:

    接下来我们来看异步发送,代码如下:

    代码
    SmtpClient _SmtpClient = new SmtpClient();
    _SmtpClient.Host
    = "服务器地址";
    _SmtpClient.Credentials
    = new NetworkCredential("用户名", "密码");

    MailMessage message
    = new MailMessage();
    message.From
    = new MailAddress("hamptest@hampoo.com", "发送人", Encoding.GetEncoding(936));
    message.To.Add(
    "tianhu.jin@hampoo.com"); //这是个正确的地址
    message.To.Add("dayan.qiu@hampoo.com"); //这是个正确的地址
    message.To.Add("jieyuan.jin@hampoo.com");//这是个无效的地址
    message.Subject = "111";
    message.Body
    = "222";

    //异步发送
    _SmtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
    _SmtpClient.SendAsync(message,
    null);

    也是一共三个邮件接收人,第三个是无效的邮件地址。

    执行后,在回调函数中可以捕获到“未将对象应用设置到对象实例”的异常信息,但是其它两个邮件接收人就收不到邮件了。

    照我个人的理解,同步、异步操作只是执行的方式不同,执行结果总得一样吧?但是发送邮件这里明显结果都不一样了,

    应该是属于一个BUG吧?

    PS:本来在项目中想用它的异步发送邮件,后来由于客户提供的邮箱地址不一定是合法的,从而发现了这个BUG,最后只好改用

    新开一个线程,在该线程中进行同步发送邮件。

    我的网站:http://i.goto327.top:85/
  • 相关阅读:
    小程序对于华为Oppo的canvas二维码渲染数据量大
    SonarQube代码质量管理工具的升级(sonarqube6.2 + sonar-scanner-2.8 + MySQL5.6+)
    SonarQube代码质量管理工具安装与使用(sonarqube5.1.2 + sonar-runner-dist-2.4 + MySQL5.x)
    在try-catch机制优化IO流关闭时,OutputStreamWriter 数据流被截断
    Java中日期格式化SimpleDateFormat类包含时区的处理方法
    彻底删除mysql服务(清理注册表)
    PHP7新特性的介绍
    RESTful架构详解
    php-config 介绍
    用 phpize 编译共享 PECL 扩展库
  • 原文地址:https://www.cnblogs.com/jintianhu/p/1915840.html
Copyright © 2011-2022 走看看