当前位置: 首页 > 工具软件 > exchange-core > 使用案例 >

.NET CORE Microsoft.Exchange.WebServices EWS发送邮件

赫连淳
2023-12-01

使用Exchange服务发送邮件服务,主要是发附件,和嵌入式图片

首先NuGet   .

.NetFrameWork   Microsoft.Exchange.WebServices

.net Core Microsoft.Exchange.WebServices.NETStandard

 

新建一个消息体类

public class SendMailContent
    {
        /// <summary>
        /// 邮件主题
        /// </summary>
        public string Subject { get; set; }
        /// <summary>
        /// 邮件主体
        /// </summary>
        public MessageBody Body { get; set; }
        /// <summary>
        /// 发送人列表
        /// </summary>
        public List<EmailAddress> ToList { get; set; }
        /// <summary>
        /// 抄送人列表
        /// </summary>
        public List<EmailAddress> CcList { get; set; }
        /// <summary>
        /// 密件抄送收件人列表
        /// </summary>
        public List<EmailAddress> BccList { get; set; }
        /// <summary>
        /// 发送后是否保存到已发送邮件列表
        /// </summary>
        public bool IsSendSave { get; set; }
        /// <summary>
        /// 附件文件路径列表
        /// </summary>
        public List<string> AttachmentFileNames { get; set; }

        /// <summary>
        /// 内嵌照片路径和其对应的CID名称
        /// </summary>
        public Dictionary<string, string> InnerPictures { get; set; }

    }

一个单例模式的 EWSHELP帮助类

public class EWSHelper
    {
        private static readonly object _lock = new object();
        private static EWSHelper _instance = null;
        /// <summary>
        /// ExchangeService对象
        /// </summary>
        private static ExchangeService service;

        private EWSHelper()
        {

        }
        public static EWSHelper GetInStance(string domain, string password)
        {

            if (_instance == null)
            {
                lock (_lock)
                {
                    if (_instance == null)
                    {
                        service = new ExchangeService(ExchangeVersion.Exchange2010);
                        service.Credentials = new WebCredentials(domain, password, "域");
                        service.Url = new Uri("Exchange WebService 地址");
                        _instance = new EWSHelper();
                    }
                }
            }
            return _instance;
        }
        
        public bool SendEmail(SendMailContent content)
        {

            //InitializeEWS();
            EmailMessage message = new EmailMessage(service);
//使用自定义发件箱
 message.From = new EmailAddress("displayname", "addresss");
            // 邮件主题
            message.Subject = content.Subject;
            message.Body = content.Body;
            message.ToRecipients.AddRange(content.ToList);
            if (content.CcList?.Count > 0)
                message.CcRecipients.AddRange(content.CcList);
            if (content.BccList?.Count > 0)
                message.BccRecipients.AddRange(content.CcList);
            //添加内嵌照片
            if (content.InnerPictures?.Count > 0)
            {
                int i = 0;
                foreach (var item in content.InnerPictures)
                {
                    message.Attachments.AddFileAttachment(item.Key, item.Value);
                    message.Attachments[i].IsInline = true;
                    //message.Attachments[i].ContentType=
                    message.Attachments[i].ContentId = item.Key;
                    i++;
                }
            }
            //添加附件
            if (content.AttachmentFileNames?.Count > 0)
                foreach (var item in content.AttachmentFileNames)
                {
                    message.Attachments.AddFileAttachment(item);
                }
           
            if(content.IsSendSave)
            {
                message.SendAndSaveCopy();
                return true;
            }
            else
            {
                message.Send();
                return true;
            }
            //}
            // 保存草稿
            //message.save();
            // 只发送不保存邮件
            // message.Send();
            // 发送并保存已发送邮件
            

        }

        
    }

调用例子

如果要使用内嵌图片 需要在邮件Body中添加对图片的 嵌入Id 

<img src = \"cid:singphoto\" alt = \"内嵌图片\" />

SendMailContent content = new SendMailContent();
                            content.Subject = subject;
                            content.Body = new MessageBody
                            {
                                BodyType = BodyType.HTML,
                                Text = "邮件体"
                            };
                            content.ToList = new List<EmailAddress>() { new EmailAddress { Address = "邮件地址", Name = "收件人"} };
              content.InnerPictures=new Dictionary<string, string>();
                            content.InnerPictures.Add("singphoto", @"D:\logo.png");
EWSHelper.GetInStance("发件人域账号", “发件人密码”).SendEmail(content);

 

 类似资料: