C# 发送模板邮件并嵌入N张图片

        private string mailServer = ConfigurationManager.AppSettings["EmailServer"];
        private string mailUserName = ConfigurationManager.AppSettings["EmailUserName"];
        private string mailPassword = ConfigurationManager.AppSettings["EmailPassword"];
        private bool ssl = bool.Parse(ConfigurationManager.AppSettings["EmailSsl"]);
        private int port = int.Parse(ConfigurationManager.AppSettings["EmailPort"]);
        //toEmail 接收邮箱        
        public ServiceResult SendMail_imgTest(string toEmail)
        {
            var result = new ServiceResult()
            {
                Success = false,
                Message = ""
            };
            try
            {
                var smtp = new SmtpClient();
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Host = mailServer;//
                smtp.Port = port;//
                smtp.EnableSsl = ssl;//
                smtp.Credentials = new System.Net.NetworkCredential(mailUserName, mailPassword);
                NameValueCollection myCol = new NameValueCollection();
                string timeNow = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                myCol.Add("TaskName", "测试图片邮件");
                myCol.Add("NowTime", timeNow);
                string mailBody = BulidByFile(Server.MapPath("/template/test.htm"), myCol);
                AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(mailBody, Encoding.UTF8, "text/html");
                StreamReader StrStream = new StreamReader(Server.MapPath("/template/email_img.xml"));
                XElement Root = XElement.Load(StrStream.BaseStream);
                var emailImgList = (from img in Root.Elements().Elements("img") select img).ToList();
                foreach (var i in emailImgList)
                {
                    var src = i.FirstAttribute.Value;
                    var name = i.LastAttribute.Value;
                    LinkedResource lrImage = new LinkedResource(Server.MapPath("/template/" + src + ""), "image/gif");
                    lrImage.ContentId = name;
                    htmlBody.LinkedResources.Add(lrImage);
                }
                StrStream.Close();
                StrStream.Dispose();
                MailMessage msg = new MailMessage();
                // sender
                msg.From = new MailAddress("test@test.cn");
                msg.AlternateViews.Add(htmlBody);
                msg.To.Add(toEmail);

                // if error, smtp server will be send notification
                msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

                // subject 主题
                msg.Subject = "测试图片邮件";

                // subject encoding  编码
                msg.SubjectEncoding = Encoding.UTF8;

                // format is html
                msg.IsBodyHtml = true;

                // body encoding  
                msg.BodyEncoding = Encoding.UTF8;

                // body 
                msg.Body = mailBody;
                smtp.Send(msg);
                result.Success = true;
                result.Message = mailBody;
                return result;
            }
            catch (Exception e)
            {
                return result;
            }
        }

email_img.xml
<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <emalimg>
    <img src="img1.jpg" cid="img_1"></img>
    <img src="img2.jpg" cid="img_2"></img>
    <img src="img3.jpg" cid="img_3"></img>
    <img src="img4.jpg" cid="img_4"></img>
  </emalimg>
</Root>
src图片路径  cid是test.html<img src="cid:img_1" />对应就行了

test.html 调用图片方法<img src="cid:img_1" />





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值