邮件发送.案例.二开实现邮件发送底层接口
【场景】星空目前接收登录验证的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,针对个别场景无法支持。如私有的邮件服务器,免登的【案例】通过插件接口自实现邮件...
点击下载文档
本文2024-09-16 18:35:17发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23122.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章