邮件发送.案例.二开实现邮件发送底层接口

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

邮件发送.案例.二开实现邮件发送底层接口

【场景】星空目前接收登录验证的smtp和部分的exchange,针对个别场景无法支持。 如私有的邮件服务器,免登的 【案例】通过插件接口自实现邮件发送 <0>扩展邮件服务器设置表单,放开参数 ![Image_20221110190605.webp](/download/01003bb58df755054e03b7859a6cb3af1f10.webp) <1>界面设置邮件发送实现插件 ![Image_20221110190643.webp](/download/01009c1c922daf064aa9b00256db715facd7.webp) ```json { "SendMessagePlugIn": "DynamicFormPlugIn.Mail.WithOutUserMail,DynamicFormPlugIn" } ``` <2>插件实现,这里用的是NetMail(这个仅支持STARTTLS,仅做参考) ```csharp using Kingdee.BOS.Msg; using Kingdee.BOS.Util; using System.Linq; using System.Net.Mail; using System.Text; using MailAttachment = System.Net.Mail.Attachment; namespace DynamicFormPlugIn.Mail { [Kingdee.BOS.Util.HotUpdate] public class WithOutUserMail : ISendMessagePlugIn { public void SendMail(EmailMessageInfo info) { using (MailMessage mailMsg = new MailMessage()) { mailMsg.From = new MailAddress(info.From, info.FromName); ///添加收件人地址 if (!info.To.IsEmpty()) { //使用密送 if (info.IsMailBCC && mailMsg.Bcc != null) { info.To.ForEach(m => { mailMsg.Bcc.Add(m); }); } else { info.To.ForEach(m => { mailMsg.To.Add(m); }); } } if (!info.Cc.IsEmpty()) { info.Cc.ForEach(m => { mailMsg.CC.Add(m); }); } ///添加邮件主题 mailMsg.Subject = info.Subject; mailMsg.SubjectEncoding = Encoding.UTF8; ///添加邮件内容 mailMsg.Body = info.Body; mailMsg.BodyEncoding = Encoding.UTF8; mailMsg.IsBodyHtml = info.IsBodyHtml; mailMsg.Priority = System.Net.Mail.MailPriority.Normal; mailMsg.DeliveryNotificationOptions = DeliveryNotificationOptions.None; ///附件 if (!info.AttachmentStream.IsEmpty()) { info.AttachmentStream.ToList().ForEach(m => { mailMsg.Attachments.Add(new MailAttachment(m.Value, m.Key)); }); } if (!info.Attachments.IsEmpty()) { info.Attachments.ToList().ForEach(m => { mailMsg.Attachments.Add(new MailAttachment(m)); }); } ///发送邮件 using (SmtpClient client = new SmtpClient(info.SmtpHost, info.SmtpPort)) { //表示以当前登录用户的默认凭据进行身份验证  //client.UseDefaultCredentials = true; //GMAIL需要设置ssl client.EnableSsl = info.EnableSSL; ///配置发送邮件的属性 client.DeliveryMethod = SmtpDeliveryMethod.Network; //包含用户名和密码  //client.Credentials = new System.Net.NetworkCredential(info.UserName, info.Password); ///发送邮件 client.Send(mailMsg); } } } } } ``` 【效果】 系统的发邮件能够被插件接管 ![Image_20221110191003.webp](/download/0100c491184e41e34e47a72d7891ece21cec.webp)

https://blog.csdn.net/molu474305148/article/details/99713389
因为NetMail,折腾了一周。


Mark!~

邮件发送.案例.二开实现邮件发送底层接口

【场景】星空目前接收登录验证的smtp和部分的exchange,针对个别场景无法支持。如私有的邮件服务器,免登的【案例】通过插件接口自实现邮件...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息