zoukankan      html  css  js  c++  java
  • Smtp发送及抄送邮件

         前段时间下载了某园友自己积累的开源类库,正好昨天有个需求需要发下邮件,于是就打算试下这个类库里面的 SmtpServerHelper 。
         程序跑起来后,单人发送、附件发送、多人发送都是正常的,不过这个多人发送的时候,邮件的收件人栏只会显示第一个收件人的信箱地址,不会再显示其他人的信箱地址,也就是如果自己不是第一个收件人,信箱地址明显就是错误的,一看源码:

    SendBufferstr += "To:=?" + mailMessage.Charset.ToUpper() + "?B?" + Base64Encode((string)mailMessage.Recipients[0]) + "?=" + "<" + (string)mailMessage.Recipients[0] + ">" + CRLF;

         原来这里没有遍历所有收件人,只是单纯的获取收件人集合的第一个显示出来。

         另外还有一点就是没有抄送和密送功能。好吧,我们就在这个基础上做小小修改就可以解决这2个问题:

         我们把上述代码做如下修改:

    //发件人,支持多个发件人显示
    SendBufferstr += "To:";
    for (int i = 0; i < mailMessage.Recipients.Count; i++)
    {
     SendBufferstr += "=?" + mailMessage.Charset.ToUpper() + "?B?" + Base64Encode((string)mailMessage.Recipients[i]) + "?=" + "<" + (string)mailMessage.Recipients[i] + ">,";
    }

         需要注意的是,用Base64编码的是用来显示收件人的名称,"<" ">"中间用来显示收件人信箱地址。
         抄送功能,其实这个CC,没有什么特别之处,因为它的发送和正常的发送是一样的,只是在显示抄送人的时候不同而已:

    if (mailMessage.CCs != null && mailMessage.CCs.Count > 0)
    {
        SendBuffer = new string[mailMessage.CCs.Count];
        for (int i = 0; i < mailMessage.CCs.Count; i++)
        {
           SendBuffer[i] = "RCPT TO:<" + (string)mailMessage.CCs[i] + ">" + CRLF;
        }
        if (!Dialog(SendBuffer, "抄送人地址错误")) return false;
    }

         这就是给抄送人发邮件,但光有这个还不行,因为抄送人是收到了,但抄送人地址栏仍然不会显示出来;

    if (mailMessage.CCs != null && mailMessage.CCs.Count > 0)
      {
         SendBufferstr += "Cc:";
         for (int i = 0; i < mailMessage.CCs.Count; i++)
         {
     SendBufferstr += "=?" + mailMessage.Charset.ToUpper() + "?B?" + Base64Encode((string)mailMessage.CCs[i]) + "?=" + "<" + (string)mailMessage.CCs[i] + ">,";
         }
         SendBufferstr += CRLF;
    }

          其实,就是将发送人的标志:"To"改成"Cc"就可以了;密送这里就不做描述了,因为密送是不用显示密送收件人的,所以上面这段就不需要了。

    作者:牦牛
    出处:http://maoniu602.cnblogs.com/
    关于:我等因无形而恐惧,于是挥下刀刃,以假面之名......
    说明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    学习 Shell —— 括号、引号
    darknet YOLOv2安装及数据集训练
    计算机设计思想 —— 总线
    GSM —— 商业蜂窝通信系统
    Java IO(输入输出)
    整数运算、浮点运算与溢出
    机器学习:Colorization using Optimization
    天池历届大赛答辩PPT及视频
    “libgomp.so.1: version `GOMP_4.0' not found” || “libstdc++.so.6: version `CXXABI_1.3.8' not found”错误
    字符串转换为数组
  • 原文地址:https://www.cnblogs.com/maoniu602/p/2259834.html
Copyright © 2011-2022 走看看