爱站seo工具包官网,响应式网站建设原则,域名怎么做,51的网站是啥1.Abp集成的邮件模块是如何实现的
ABP中对邮件的封装主要集成在Abp.Net.Mail和Abp.Net.Mail.Smtp命名空间下#xff0c;相应源码在此。 分析可以看出主要由以下几个核心类组成#xff1a;
EmailSettingNames#xff1a;静态常量类#xff0c;主要定义了发送邮件需要的相关…1.Abp集成的邮件模块是如何实现的
ABP中对邮件的封装主要集成在Abp.Net.Mail和Abp.Net.Mail.Smtp命名空间下相应源码在此。 分析可以看出主要由以下几个核心类组成
EmailSettingNames静态常量类主要定义了发送邮件需要的相关参数Port、Host、UserName、Password、Domain、EnableSsl、UseDefaultCredentials。EmailSettingProvider继承自SettingProvider对EmailSettingNames中定义的参数项进行设置。**SmtpEmailSenderConfiguration ** 继承自EmailSenderConfiguration用来读取设置的支持Smtp协议邮件相关参数项。SmtpEmailSender继承自EmailSenderBase实现了ISmtpEmailSender接口。该类就是基于SMTP协议进行邮件发送。提供了SendEmailAsync(MailMessage mail)和SendEmail(MailMessage mail)同步异步两种发送邮件的方法。
想具体了解源码的实现方式建议参考以下两篇博文结合ABP源码实现邮件发送功能ABP源码分析七Setting 以及 Mail
2.如何使用Abp集成的邮件系统发送邮件 2.1. 初始化邮件相关参数
在以EntityFramework结尾的项目中的DefaultSettingsCreator中添加默认设置然后在程序包管理控制台执行Update-DataBase这样即可把种子数据更新到数据库中。 代码设置邮件相关参数
代码中我是以QQ邮箱设置有几点需要注意
UserName即为QQ邮箱名但Password并不是你QQ邮箱的登陆密码而是授权码。授权码如何申请请参考官方文档。否则发送邮件将会得到**[Error: need EHLO and AUTH first !”] **异常。申请到的授权码
Domain置空即可。
2.2. 代码调用示例
首先在Service中通过构造函数注入ISmtpEmailSenderConfigurationprivate readonly IRepositoryTask _taskRepository;private readonly IRepositoryUser, long _userRepository;private readonly ISmtpEmailSenderConfiguration _smtpEmialSenderConfig;/// summary///In constructor, we can get needed classes/interfaces.///They are sent here by dependency injection system automatically./// /summarypublic TaskAppService(IRepositoryTask taskRepository, IRepositoryUser, long userRepository,ISmtpEmailSenderConfiguration smtpEmialSenderConfigtion){_taskRepository taskRepository;_userRepository userRepository;_smtpEmialSenderConfig smtpEmialSenderConfigtion;}在需要发送邮件的地方调用SmtpEmailSender类的发送方法即可。SmtpEmailSender emailSender new SmtpEmailSender(_smtpEmialSenderConfig);string message You hava been assigned one task into your todo list.;emailSender.Send(ysjshengjieqq.com, task.AssignedPerson.EmailAddress, New Todo item, message);成功接收邮件
3.如何使用Abp集成的通知模块发送通知 直接上代码示例
首先在Service中通过构造函数注入INotificationPublisher/// summary///In constructor, we can get needed classes/interfaces.///They are sent here by dependency injection system automatically./// /summarypublic TaskAppService(IRepositoryTask taskRepository, IRepositoryUser, long userRepository,ISmtpEmailSenderConfiguration smtpEmialSenderConfigtion, INotificationPublisher notificationPublisher){_taskRepository taskRepository;_userRepository userRepository;_smtpEmialSenderConfig smtpEmialSenderConfigtion;_notificationPublisher notificationPublisher;}在需要发送通知的地方调用INotificationPublisher接口提供的Publish或PublishAsync方法即可我们先来看看需要用到参数。注意
NotificationData 是可选的某些通知可能不需要数据。一些预定义的通知数据类型可能对于大多数情况够用了。 MessageNotificationData可以用于简单的信息 LocalizableMessageNotificationData可以用于本地化的带参数的通知信息。string message You hava been assigned one task into your todo list.;
_notificationPublisher.Publish(NewTask, new MessageNotificationData(message), null,NotificationSeverity.Info, new[] {task.AssignedPerson.ToUserIdentifier()});成功接收通知 作者圣杰 链接https://www.jianshu.com/p/ea10c8168264 来源简书 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。