日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

ABP入门系列(17)——使用ABP集成的邮件系统发送邮件

發布時間:2023/12/10 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABP入门系列(17)——使用ABP集成的邮件系统发送邮件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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中通過構造函數注入ISmtpEmailSenderConfiguration

?

private readonly IRepository<Task> _taskRepository;private readonly IRepository<User, long> _userRepository;private readonly ISmtpEmailSenderConfiguration _smtpEmialSenderConfig;/// <summary>///In constructor, we can get needed classes/interfaces.///They are sent here by dependency injection system automatically./// </summary>public TaskAppService(IRepository<Task> taskRepository, IRepository<User, 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("ysjshengjie@qq.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./// </summary>public TaskAppService(IRepository<Task> taskRepository, IRepository<User, 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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

總結

以上是生活随笔為你收集整理的ABP入门系列(17)——使用ABP集成的邮件系统发送邮件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。