C#批量发送、抄送邮件、附件

.NET 专栏收录该内容
3 篇文章 0 订阅

**

以下代码发送效果在网易和腾讯邮箱显示不一样

C#批量发送、抄送、密送、回执、邮件、附件

**

代码方法

using System;
using System.Net.Mail;
using System.Net;

namespace Tool
{
    public class Mail
    {
        
        #region 发送邮件
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="LoginAccount">邮箱登录账号</param>
        /// <param name="pwd">邮箱密码 or 客户端授权码</param>
        /// <param name="SendName">发件人名称 收件人邮箱列表显示名称</param>
        /// <param name="Subject">邮件主题</param>
        /// <param name="Body">邮件内容 已启用html</param>
        /// <param name="ReciveAddrList">收件人列表{{"姓名","邮箱地址"},{"姓名","邮箱地址"}}</param>
        /// <param name="CCAddrList">抄送人列表{{"姓名","邮箱地址"},{"姓名","邮箱地址"}}</param>
        /// <param name="BBAddrList">秘秘抄送人列表</param>
        /// <param name="HeadersAddrList">回执人列表</param>
        /// <param name="AttachFile">附件列表</param>
        /// <param name="High">邮件级别</param>
        /// <param name="EnableSsl">SSL加密 默认开启</param>
        /// <param name="SMTP">SMTP协议地址 默认163邮箱 可以自行网上查询填写</param>
        /// <returns></returns>
        public static bool SendEmail(string LoginAccount, string pwd, string SendName, string Subject, string Body, Dictionary<string, string> ReciveAddrList, Dictionary<string, string> CCAddrList, List<string> BccAddrList, List<string> HeadersAddrList, Dictionary<string, string> AttachFile, MailPriority High = MailPriority.Normal, bool EnableSsl = true, string SMTP = "smtp.163.com")
        {
            using (SmtpClient client = new SmtpClient(SMTP))
            {
                if ((ReciveAddrList == null) || (ReciveAddrList.Count == 0)) //未填写收件人地址
                {
                    return false;
                }
                else
                {
                    #region 邮件基本配置
                    client.UseDefaultCredentials = true;
                    client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;//通过SMTP协议发送
                    client.Credentials = new System.Net.NetworkCredential(LoginAccount, pwd);//验证身份 
                    client.EnableSsl = EnableSsl;//SLL加密
                    MailMessage Email = new MailMessage();//建立邮件
                    Email.From = new System.Net.Mail.MailAddress(LoginAccount, SendName);//发送邮件邮件和显示的名字
                    Email.Subject = Subject;//邮件主题
                    Email.Body = Body;//邮件正文
                    Email.SubjectEncoding = System.Text.Encoding.UTF8;//邮件主题编码
                    Email.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
                    Email.Priority = High;//邮件优先级
                    Email.IsBodyHtml = true;//是否启用html 
                    #endregion
                    #region 逐一添加收件人
                    foreach (KeyValuePair<string, string> kvp in ReciveAddrList)//逐一添加收件人
                    {
                        Email.To.Add(new MailAddress(kvp.Value, kvp.Key, Encoding.UTF8));
                    }
                    #endregion
                    #region 添加附件
                    if (AttachFile != null)//添加附件
                    {
                        foreach (string key in AttachFile.Keys)
                        {
                            Attachment file = new Attachment(AttachFile[key]);
                            file.Name = key;
                            Email.Attachments.Add(file);
                        }
                    }
                    #endregion
                    #region 逐一添加抄送人
                    foreach (KeyValuePair<string, string> kvp in CCAddrList)//逐一添加抄送人
                    {
                        Email.CC.Add(new MailAddress(kvp.Value, kvp.Key, Encoding.UTF8));
                    }
                    #endregion
                    #region 逐一添加秘秘抄送人
                    foreach (string BccAddr in BccAddrList)//逐一添加秘秘抄送人
                    {
                        Email.Bcc.Add(BccAddr);
                    }
                    #endregion
                    #region 逐一添加回执人员
                    foreach (string Headers in HeadersAddrList)//逐一添加回执人员
                    {
                        Email.Headers.Add("Disposition-Notification-To", "<" + Headers + ">");
                    }
                    #endregion
                    try
                    {
                        client.Send(Email);//正式发邮件
                        client.Dispose();
                        Email.Dispose();
                    }
                    catch
                    {
                        return false;
                    }
                }
            }
            return true;
        }
        #endregion
    }
}

调用方法
 Tool.Mail.SendEmail(
               "发送邮箱账号@163.com",//发送账号
               "密码",// 如果是网易这里写客户端授权码 不是的话写登录账号密码
               "标题",//别人收件列表上显示的名称
               "邮件主题",
               "内容测试-群发邮件、抄送人、密送人、回执人、附件",//邮件内容
               new Dictionary<string, string> { { "腾讯-邮箱", "123456789@qq.com" }, { "腾讯-邮箱", "123456789@qq.com" } }, // 收信人列表
               new Dictionary<string, string> { { "收信人名称", "收信人邮箱地址" }, { "收信人名称", "收信人邮箱地址" } },//抄送人列表
               new List<string> { "密送人邮箱地址" },//密送人列表
               new List<string> { "回执人邮箱地址", "回执人邮箱地址" },//回执人列表
               new Dictionary<string, string> { { "考核系统", "C:\\201903141457100864.xlsx" }, { "绩效考核.xlsx", "C:\\201903131116394094.xlsx" } }, MailPriority.Normal);//发送附件
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值