FluentEmail邮件发送

        在写程序是由于需要可能要有发送邮件的模块。第三方库FluentEmail能够满足需求 ,FluentEmail是一款在GitHub上开源免费的支持.Net和.Net Core邮件发送组件,它在GitHub地址是GitHub - lukencode/FluentEmail: All in one email sender for .NET. Supports popular senders (SendGrid, MailGun, etc) and Razor templates.All in one email sender for .NET. Supports popular senders (SendGrid, MailGun, etc) and Razor templates. - GitHub - lukencode/FluentEmail: All in one email sender for .NET. Supports popular senders (SendGrid, MailGun, etc) and Razor templates.https://github.com/lukencode/FluentEmail

邮件传输常用的协议有,SMTP、POP3、IMAP4。他们都属于TCP/IP协议,默认状态下分别通过TCP端口25,110,和143建立链接。

SMTP协议

SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

POP协议

POP邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务之一:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。POP协议支持多用户互联网邮件扩展,后者允许用户在电子邮件上附带二进制文件,如文字处理文件和电子表格文件等,实际上这样就可以传输任何格式的文件了,包括图片和声音文件等。在用户阅读邮件时,POP命令所有的邮件信息立即下载到用户的计算机上,不在服务器上保留。

IMAP协议

互联网信息访问协议(IMAP)是一种优于POP的新协议。和POP一样,IMAP也能下载邮件、从服务器中删除邮件或询问是否有新邮件,但IMAP克服了POP的一些缺点。例如,它可以决定客户机请求邮件服务器提交所收到邮件的方式,请求邮件服务器只下载所选中的邮件而不是全部邮件。客户机可先阅读邮件信息的标题和发送者的名字再决定是否下载这个邮件。通过用户的客户机电子邮件程序,IMAP可让用户在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信的一部分或全部内容,完成所有这些工作时都不需要把邮件从服务器下载到用户的个人计算机上。

简单来说,SMTP协议主要是用于发邮件,POP和IMAP协议用于读取、删除、下载邮件。

FluentEmail功能强大,而且对不同场景的支持都有独立的Nuget包,这种低耦合的拆分不仅使得依赖非常清晰,而且避免引入不需要的代码,具体功能包含在以下的组件包中

//如果使用smtp服务发送邮件必须要设置smtp服务信息
SmtpClient smtp = new SmtpClient
{
    //smtp服务器地址(我这里以126邮箱为例,可以依据具体你使用的邮箱设置)
    Host = "smtp.126.com",
    UseDefaultCredentials = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Port=587,
    EnableSsl = true,
    //这里输入你在发送smtp服务器的用户名和密码
    Credentials = new NetworkCredential("邮箱用户名", "邮箱密码")
};
//设置默认发送信息
Email.DefaultSender = new SmtpSender(smtp);
var email = Email
    //发送人
    .From("zhangsan@126.com")
    //收件人
    .To("lisi@qq.com")
    //抄送人
    .CC("admin@126.com")
    //邮件标题
    .Subject("邮件标题")
    //邮件内容
    .Body("邮件内容");
//依据发送结果判断是否发送成功
var result = email.Send();
//或使用异步的方式发送
//await email.SendAsync();
if (result.Successful)
{
    //发送成功逻辑
}
else
{
    //发送失败可以通过result.ErrorMessages查看失败原因
}

如果你发送的内容中包含html格式的内容可以使用如下方式

var email = Email
    //发送人
    .From("zhangsan@126.com")
    //收件人
    .To("lisi@qq.com")
    //抄送人
    .CC("admin@126.com")
    //邮件标题
    .Subject("邮件标题")
    //只需要额外设置第二个参数为true即可
    .Body("<h1 align=\"center\">.NET大法好</h1><p>是的,这一点毛病都没有</p>",true);
//发送
var result = email.Send();

这个我们通过点击查看Body的方法声明即可得知第二个参数是用来表示内容是否为html格式,默认为false

如果我们需要在发送的邮件中添加一个附件的话,可以使用Attache方法添加附件

var email = Email
        //发送人
        .From("zhangsan@qq.com")
        //收件人
        .To("lisi@126.com")
        //抄送人
        .CC("admin@126.com")
        //邮件标题
        .Subject("关于.Net Core怎么样")
        //邮件内容
        .Body("<h1 align=\"center\">.NET Core</h1><p>.Net Core很优秀吗?是的,一点毛病都没有!!!</p>",true);

//构建附件
var stream = new MemoryStream();
var sw = new StreamWriter(stream);
sw.WriteLine("您好,这是文本里的内容");
sw.Flush();
stream.Seek(0, SeekOrigin.Begin);
var attachment = new FluentEmail.Core.Models.Attachment
{
    Data = stream,
    ContentType = "text/plain",
    Filename = "Hello.txt"
};
//添加附件
email.Attach(attachment);
var result = email.Send();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值