.NET CORE 下收发邮件之 MAILKIT
背景
利用代码发送邮件在工作中还是比较常见的,相信大家都用过SmtpClient
来处理发送邮件的操作,不过这个类以及被标记已过时,所以介绍一个微软推荐的库MailKit
来处理。
MailKit
开源地址:https://github.com/jstedfast/MailKit
需要邮件功能
1、服务提供方:需提供邮件收发客户端或Web服务。如:QQ邮箱、GMail邮箱、126、163等知名邮件服务提供商。注:如果你使用的第三方不知名邮件服务商提供的邮件收发服务,通过其发出的邮件,可能会被其他知名邮件服务提供商的STMP服务器视为是"恶意邮件或垃圾邮件"!
2、消息推送:消息推送方
3、App:某些网站会员的注册功能或者功能激活功能。
协议
1、SMTP(Simple Mail Transfer Protocol) ---简单邮件传输协议
2、POP3(Post Office Protocol -Version3) ---邮局协议第三个版本
代码实现
1、新建项目 引用 MailKit
using MailKit.Net.Smtp;using MimeKit;
2、指定发件人、收件人、附件等信息
[HttpPost][Route("sendmail")]public bool Sendmail(SendmailDto model){string mailTo = model.mail;string title = model.title;string requestId = Guid.NewGuid().ToString("N");string path = WriteFilepath(requestId, title + ".html", model.str);string docpath = path.Replace(".html", ".docx");try{string applicationRoot = AppContext.BaseDirectory;var provider = new PhysicalFileProvider(applicationRoot);string apath = @"C:/www/fengnan";// string apath = @"C:/net6.0";var filePath =//applicationRoot +apath + $"/Template/fldoc/" + requestId + "/";var filePath2 =//applicationRoot +apath + $"/Template/fldoc/" + requestId + "/"+ title + ".html";ecmd("soffice --headless --convert-to docx:\"Office Open XML Text\" " + filePath2 + " --outdir " + filePath);// string docpath = path.Replace(".html", ".docx");}catch (Exception ex){_logger.Error(ex);}// string mailFrom = "xxxx@qq.com";string mailFrom = "xxx@xx.net";// mailTo = "xx@xxx.com";string Text = "内容见附件,请查收<br/> 感谢";string mailFromAccount = "xxx@qq.com";string mailPassword = "xxxx";string mailFromAccount = "xxx@xx.net";string mailPassword = "xxxx@";var contentRoot = Directory.GetCurrentDirectory();var webRoot = Path.Combine(contentRoot, "wwwroot");/// string path = Path.Combine(webRoot, "Images/icc.png");// string path = @"D:\xxxx知.html";// string Text = @"Hey Chandler,//I just wanted to let you know that Monica and I were going to go play some paintball, you in?//-- Joey";Config eConfig = new Config{ From = new MailAddress("xxxx", mailFrom),// Host = "smtp.qq.com", Host = "smtp.exmail.qq.com", MailFromAccount = mailFromAccount, MailPassword = mailPassword,// Port = 587, Port = 465, UseSsl = true, IsHtml = true};List<MailAddress> tos = new List<MailAddress>();tos.Add(new MailAddress("", mailTo));List<string> flist = new List<string>();if (System.IO.File.Exists(docpath)){flist.Add(docpath);//docpath}else{flist.Add(path);}Mailhelper.SendEmail(eConfig, tos, title, Text, flist.ToArray());return true;}
3、发邮件帮助类
using MimeKit;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace DFTech.Service.Filters
{/// <summary>/// 发邮件/// </summary>public class Mailhelper{/// <summary>/// 发邮件/// </summary>/// <param name="config"></param>/// <param name="tos"></param>/// <param name="subject"></param>/// <param name="message"></param>/// <param name="attachments"></param>/// <returns></returns>public static void SendEmail(Config config, List<MailAddress> tos, string subject, string message, params string[] attachments){var emailMessage = new MimeMessage();emailMessage.From.Add((MailboxAddress)config.From);foreach (var to in tos)emailMessage.To.Add(to as MailAddress);emailMessage.Subject = subject;var alternative = new Multipart("alternative");if (config.IsHtml)alternative.Add(new TextPart("html") { Text = message });elsealternative.Add(new TextPart("plain") { Text = message });if (attachments != null){foreach (string f in attachments){var attachment = new MimePart()//("image", "png"){ContentObject = new ContentObject(File.OpenRead(f), ContentEncoding.Default),ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),ContentTransferEncoding = ContentEncoding.Base64,FileName = Path.GetFileName(f)};alternative.Add(attachment);}}emailMessage.Body = alternative;using (var client = new SmtpClient()){client.Connect(config.Host, config.Port, config.UseSsl);// SecureSocketOptions.Noneclient.AuthenticationMechanisms.Remove("XOAUTH2");client.Authenticate(config.MailFromAccount, config.MailPassword);client.Send(emailMessage);client.Disconnect(true);}}}public class Config{public int Port { get; set; } = 25; //25public string Host { get; set; } //smtp.hantianwei.cnpublic bool IsHtml { get; set; } = true;public bool UseSsl { get; set; } = false;public string MailFromAccount { get; set; }//mail@hantianwei.cnpublic string MailPassword { get; set; }public MailAddress From { get; set; }}/// <summary>////// </summary>public class MailAddress : MailboxAddress{public MailAddress(string name, string address) : base(name, address){}public MailAddress(Encoding encoding, string name, string address) : base(encoding, name, address){}}
}
.NET CORE 下收发邮件之 MAILKIT相关推荐
- vs基于控制台应用程序的定时发送邮件_.NET Core 下收发邮件之 MailKit
利用代码发送邮件在工作中还是比较常见的,相信大家都用过SmtpClient来处理发送邮件的操作,不过这个类以及被标记已过时,所以介绍一个微软推荐的库MailKit来处理. MailKit开源地址:ht ...
- linux下重启邮件服务,Linux的postfix邮件服务
一.postfix邮件服务 Postfix 是一种电子邮件服务器,postfix提供smtp协议用来投递邮件 默认端口25 /var/log/maillog 服务日志 mail root@wes ...
- icloud电子邮件服务器,如何使用 iCloud 电子邮件地址别名收发邮件?
iCloud 账户持有人可以使用电子邮件地址别名,在不泄露真实电子邮件地址的情况下收发邮件.使用电子邮件别名登录网站和在线服务可以通过将其隐藏在垃圾邮件发送者和其他未经请求的消息源中,保护用户的真实电 ...
- AD下安装Exchange及简单收发邮件【视频】
好久没有翻过以前的课本了"EXCHANGE"邮件系统管理,今天在无聊的时间拿起课本看了下,顺手复习安装管理邮件系统,也顺便录下这段视频,新手可以看看. 实验环境: VMWAR5.5 ...
- linux用户无法接收邮件,linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(一)-系统账户登陆收发邮件...
linux 下 搭建邮件邮件服务器(一)-系统账户登陆收发邮件 一.安装环境# lsb_release -d Description: CentOS release 6.5 (Final) # ...
- linux mysql 邮件_linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件...
linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件 使用虚拟用户收发邮件安装 九.安装Courier authentication lib ...
- linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件...
linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件 使用虚拟用户收发邮件安装 九.安装Courier authentication lib ...
- java smtp.126.com_Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程
转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自 E-Mail协议简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器. 发送 ...
- exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合Mail实现邮件发送
SpringBoot2.x系列教程69--SpringBoot中整合邮件发送 作者:一一哥 注: 本文案例以QQ邮箱发送的实现为例! 一. 邮件发送概述 1. 概述 在Spring框架中提供了一个Ja ...
最新文章
- SIC插槽,WSIC插槽,XSIC插槽
- Show Attend and Tell的词表
- python入门文件读取与写入_初学者Python:读取和写入同一文件
- Ivan and Burgers(CF-1100F)
- java的标识符可以以数字开头_标识符可以以数字开头,但不能是Java中的关键字...
- 年入10亿,“山寨”耳机芯片凶猛
- 如何删除github上的文件
- zabbix通过UNIXODBC连接数据库
- numpy ndarry根据条件筛选数据
- dnfdpl服务器维护了,DNF2019DPL机制介绍 以及本次DPL怪物顺序汇总
- /和./和../的区别
- 微分方程解析解+数值解
- python 判断大于等于且小于等于_关于if语句:检查python中值是否大于、小于或等于零的更好方法...
- mysql查看表存不存在
- 第六章第二十五题(将毫秒数转换成小时数、分钟数和秒数)(Convert milliseconds to hours, minutes, and seconds)
- JavaScript内部原理实践——真的懂JavaScript吗?(转)
- 深圳国际会展中心钢结构封顶 总建筑面积相当于6座“鸟巢”
- 检测网络连接是否正常的方法
- 负载均衡器技术Nginx和F5的优缺点对比
- 原创 HTML5:JS操作SVG实践体会