IEmailSender 是一个邮件发送服务接口,使用它你不需要知道详细信息就可以简单的发送邮件。如下所示:
我们只是简单的 IEmailSender 接口以及使用了 Send 方法。Send方法有一些重载方法。它能够获取一个MailMessage对象(对于.net core它是无效的,因为.net core没有这些发送邮件的功能类:SmtpClient和MailMessage)。
ISmtpEmailSender
有一个 ISmtpEmailSender 的接口,该接口扩展自 IEmailSender,在该接口中有一个 BuildClient 方法,可以用直接使用该方法来创建一个 SmtpClient 对象(对于.net core它是无效的,因为.net core没有这些发送邮件的功能类:SmtpClient和MailMessage)。在大多数情况下使用 IEmailSender 发送邮件,这已经足够了。
NullEmailSender
NullEmailSender 是一个使用空对象模式来实现 IEmailSender 接口的类。你可以在单元测试中使用它或者使用的方式来注入 IEmailSender。
Email Sender使用设置管理系统来读取发送邮件的配置。所有的设置名称以常量字符串的方式定义在 Abp.Net.Mail.EmailSettingNames 类中。如下所示:
Abp.Net.Mail.DefaultFromAddress:在发送邮件时,如果没有指定邮件发送者,该值会自动作为邮件的发送者(如上例所示)
Abp.Net.Mail.Smtp.Host:SMTP服务器的IP/域名(默认:127.0.0.1)
Abp.Net.Mail.Smtp.Port: SMTP服务器的端口(默认:25)
Abp.Net.Mail.Smtp.UserName: 用户名,如果SMTP需要身份认证
Abp.Net.Mail.Smtp.Password: 密码,如果SMTP需要身份认证
Abp.Net.Mail.Smtp.Domain: 域用户名,如果SMTP需要身份认证
由于.net core不支持标准的System.Net.Mail.SmtpClient,所以我们需要使用第三方插件来发送电子邮件。幸运的是,为默认的SmtpClient提供了一个很好的替代品。微软也建议使用该插件。
Abp使用 Abp.MailKit package 来集成邮件发送功能。所以,你可以一直使用 IEmailSender 接口通过MailKit来发送邮件(如上所述)。
安装
首先,安装 到你的项目:
集成
将AbpMailKitModule添加到模块的依赖项中:
使用
你可以像之前所述的那样使用 IEmailSender,因为 Abp.MailKit package 中实现了该接口,并且注册了该接口的实现。也可以像之前所述那样来配置它。
自定制
当你创建MailKit的SmtpClient的时候,你可能需要做一些额外的配置或者定制。这样的话,你可以用你自己的实现来 IMailKitSmtpBuilder 接口。你可以继承DefaultMailKitSmtpBuilder 类来实现自定制,因为这样做更容易。例如:你想要接收所有的SSL证书,那么你可以重写 ConfigureClient 方法,如下所示: