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 方法,如下所示: