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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

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

1.Abp集成的郵件模塊是如何實(shí)現(xiàn)的

ABP中對郵件的封裝主要集成在Abp.Net.Mail和Abp.Net.Mail.Smtp命名空間下,相應(yīng)源碼在此。

分析可以看出主要由以下幾個核心類組成:

  • EmailSettingNames:靜態(tài)常量類,主要定義了發(fā)送郵件需要的相關(guān)參數(shù):Port、Host、UserName、Password、Domain、EnableSsl、UseDefaultCredentials。
  • EmailSettingProvider:繼承自SettingProvider,對EmailSettingNames中定義的參數(shù)項(xiàng)進(jìn)行設(shè)置。
  • **SmtpEmailSenderConfiguration ** :繼承自EmailSenderConfiguration,用來讀取設(shè)置的支持Smtp協(xié)議郵件相關(guān)參數(shù)項(xiàng)。
  • SmtpEmailSender:繼承自EmailSenderBase,實(shí)現(xiàn)了ISmtpEmailSender接口。該類就是基于SMTP協(xié)議進(jìn)行郵件發(fā)送。提供了SendEmailAsync(MailMessage mail)和SendEmail(MailMessage mail),同步異步兩種發(fā)送郵件的方法。

想具體了解源碼的實(shí)現(xiàn)方式,建議參考以下兩篇博文:
結(jié)合ABP源碼實(shí)現(xiàn)郵件發(fā)送功能
ABP源碼分析七:Setting 以及 Mail

2.如何使用Abp集成的郵件系統(tǒng)發(fā)送郵件


2.1. 初始化郵件相關(guān)參數(shù)

在以EntityFramework結(jié)尾的項(xiàng)目中的DefaultSettingsCreator中添加默認(rèn)設(shè)置,然后在程序包管理控制臺執(zhí)行Update-DataBase,這樣即可把種子數(shù)據(jù)更新到數(shù)據(jù)庫中。

代碼設(shè)置郵件相關(guān)參數(shù)

代碼中我是以QQ郵箱設(shè)置,有幾點(diǎn)需要注意:

  • UserName即為QQ郵箱名,但Password并不是你QQ郵箱的登陸密碼,而是授權(quán)碼。授權(quán)碼如何申請,請參考官方文檔。否則發(fā)送郵件將會得到**[Error: need EHLO and AUTH first !”] **異常。

申請到的授權(quán)碼

  • Domain置空即可。

2.2. 代碼調(diào)用示例

  • 首先,在Service中通過構(gòu)造函數(shù)注入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;}
  • 在需要發(fā)送郵件的地方調(diào)用SmtpEmailSender類的發(fā)送方法即可。

?

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集成的通知模塊發(fā)送通知


直接上代碼示例:

  • 首先,在Service中通過構(gòu)造函數(shù)注入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;}
  • 在需要發(fā)送通知的地方調(diào)用INotificationPublisher接口提供的Publish或PublishAsync方法即可;我們先來看看需要用到參數(shù)。

注意

  • NotificationData 是可選的,某些通知可能不需要數(shù)據(jù)。一些預(yù)定義的通知數(shù)據(jù)類型可能對于大多數(shù)情況夠用了。 MessageNotificationData可以用于簡單的信息, LocalizableMessageNotificationData可以用于本地化的,帶參數(shù)的通知信息。

?

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
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。