C# SmtpClient发送邮件以和Mailkit 邮件发送包含附件
在进行微信小程序以及手机app开发时,作为后端就需要进行接口的开发。
像平常一样部署的将数据以邮件形式发送
接口代码内容如下:
-
[]
-
public string SendQQMail(string key, string strto, string strfile, string strfileName)//key是为了安全校验,strto是接收者的邮箱,strfile为附件的路径,strfileName附件名称
-
{
-
string systemKey = "37a3ab25-cd1a-481b-a675-87161b20c19e";
-
if (key == systemKey)
-
{
-
try
-
{
-
string strFrom = "xxx@qq.com";
-
string strSubject = "发送测试";
-
string strFromName = "发送测试";
-
string strBody = "发送测试";
-
//企业邮箱smtp
-
string strSmtpServer = "smtp.qq.com";
-
string strFromPass = "xxxxxxx";//授权码
-
SmtpClient smtpClient = new SmtpClient();
-
smtpClient.EnableSsl = true;
-
smtpClient.UseDefaultCredentials = false;//先设置
-
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; //指定电子邮件发送方式
-
smtpClient.Host = strSmtpServer; //指定SMTP服务器
-
smtpClient.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass); //用户名和授权码
-
// 发送邮件设置
-
//MailMessage mailMessage = new MailMessage(strFrom, strto); // 发送人和收件人
-
MailMessage mailMessage = new MailMessage();
-
//发件人地址
-
//如是自己,在此输入自己的邮箱
-
mailMessage.From = new MailAddress(strFrom, strFromName, Encoding.UTF8);
-
//收件人地址
-
mailMessage.To.Add(new MailAddress(strto));
-
// 添加附件
-
if (strfile != "")
-
{
-
{
-
Attachment mailAttach_1 = new Attachment(strfile);
-
if (strfile.Contains('.'))
-
{
-
mailAttach_1.Name = strfileName strfile.Substring(strfile.LastIndexOf('.'));
-
}
-
else mailAttach_1.Name = strfileName ".xlsx";
-
mailMessage.Attachments.Add(mailAttach_1);
-
}
-
mailMessage.Subject = strSubject; //主题
-
mailMessage.Body = strBody;//内容
-
mailMessage.BodyEncoding = Encoding.UTF8; //正文编码
-
mailMessage.IsBodyHtml = true; //设置为HTML格式
-
mailMessage.Priority = MailPriority.Low; //优先级
-
smtpClient.Send(mailMessage);
-
Console.WriteLine();
-
Console.ReadLine();
-
return "发送成功";
-
}
-
catch (Exception ex)
-
{
-
System.IO.StreamWriter file = new System.IO.StreamWriter("d:\\log.txt");
-
file.WriteLine(ex.StackTrace);
-
file.Close();
-
return ex.Message;
-
}
-
}
-
else
-
{
-
return "";
-
}
-
}
小程序在部署iis的时候需要tls协议,主流的邮箱服务商加密协议使用的都是TLS。
但是System.Net.Mail.SmtpClient
不支持较新的TLS协议因此需要使用另一个
MailKit是一个开源的基于MimeKit的跨平台邮件收发类库,支持IMAP、POP3、SMTP。其中SmtpClient也支持TLS协议.
可以很好的支持 .NET Core以及 .NET Framework框架的邮件发送
-
using MailKit.Net.Smtp;
-
using MailKit;
-
using MimeKit;
接口代码如下:
-
[]
-
public string SendQQMail(string key, string strto, string strfile, string strfileName)//key是为了安全校验,strto是接收者的邮箱,strfile为附件的路径,strfileName附件名称
-
{
-
string systemKey = "37a3ab25-cd1a-481b-a675-87161b20c19e";
-
if (key == systemKey)
-
{
-
try
-
{
-
var message = new MimeMessage();
-
message.From.Add(new MailboxAddress("test", "xxxxxx@qq.com"));//发送人的名称以及邮箱
-
message.To.Add(new MailboxAddress("test", strto));//接收人的名称以及邮箱
-
message.Subject = "发送测试";//邮件主题
-
//html or plain
-
var bodyBuilder = new BodyBuilder();
-
bodyBuilder.HtmlBody = "<b>发送测试</b>";
-
bodyBuilder.TextBody = "发送测试";
-
message.Body = bodyBuilder.ToMessageBody();
-
Multipart multipart = new Multipart("mixed");
-
//附件
-
string absolutePath = strfile;
-
MimePart attachment = new MimePart()
-
{
-
//读取文件,只能用绝对路径
-
ContentObject = new ContentObject(File.OpenRead(absolutePath), ContentEncoding.Default),
-
ContentDisposition = new MimeKit.ContentDisposition(MimeKit.ContentDisposition.Attachment),
-
ContentTransferEncoding = ContentEncoding.Base64,
-
//文件名字
-
FileName = strfileName ".xlsx"
-
};
-
multipart.Add(attachment);
-
message.Body = multipart;
-
using (var client = new MailKit.Net.Smtp.SmtpClient())
-
{
-
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
-
//smtp服务器,端口,是否开启ssl
-
client.Connect("smtp.qq.com", 465, true);
-
client.Authenticate("xxxxx@qq.com", password);//发送者邮箱以及授权码
-
client.Send(message);
-
client.Disconnect(true);
-
}
-
return "发送成功";
-
}
-
catch (Exception ex)
-
{
-
System.IO.StreamWriter file = new System.IO.StreamWriter("d:\\log.txt");
-
file.WriteLine(ex.StackTrace);
-
file.Close();
-
return ex.Message;
-
}
-
}
-
else
-
{
-
return "";
-
}
-
}
要使用需要安装打开vs2019 Nuget 搜索一下两个包 两个m开头的
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfiibbf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01