abp vnext發郵件要使用abpmailkitmodule的實現iemailsender
它使用setting裡面的配置,在官方已經配置如下
internal class emailsettingprovider : settingdefinitionprovider
public override void define(isettingdefinitioncontext context)
context.add(
new settingdefinition(emailsettingnames.smtp.host, "127.0.0.1"),
new settingdefinition(emailsettingnames.smtp.port, "25"),
new settingdefinition(emailsettingnames.smtp.username),
new settingdefinition(emailsettingnames.smtp.password, isencrypted: true),
new settingdefinition(emailsettingnames.smtp.domain),
new settingdefinition(emailsettingnames.smtp.enablessl, "false"),
new settingdefinition(emailsettingnames.smtp.usedefaultcredentials, "true"),
new settingdefinition(emailsettingnames.defaultfromaddress, "[email protected]"),
預設配置是不合適,如果需要自己配置,則需要在選擇合適settingprovider,在官方提供了五種方法,它使用的倒序的做的法,先
user>tenant>global>configuration>default
configure(options =>
options.valueproviders.add();
options.valueproviders.add();
options.valueproviders.add();
options.valueproviders.add();
options.valueproviders.add();
其中前面三種是user>tenant>global是使用 isettingstore,因此我們可以引入ef core與sqlserver做儲存,引入下面模組
[dependson(
typeof(abpautofacmodule),
typeof(abpmailkitmodule),
typeof(abpsettingmanagementdomainmodule),
typeof(abpsettingmanagemententityframeworkcoremodule),
typeof(abpentityframeworkcoresqlservermodule)
基中abpsettingmanagementdomainmodule,用來管理setting的,我們使用全域性的,在providername使用g,providerkey使用空
另外可以寫乙個idataseedcontributor,用來寫入種子資料,特別注意的是usedefaultcredentials要使用false,即啟用密碼認證
await _settingmanager.setasync(emailsettingnames.smtp.host, "smtp.163.com", "g", "");即
await _settingmanager.setasync(emailsettingnames.smtp.username, "***", "g", "");
await _settingmanager.setasync(emailsettingnames.smtp.password, "***", "g", "");
await _settingmanager.setasync(emailsettingnames.defaultfromaddress, "***", "g", "");
await _settingmanager.setasync(emailsettingnames.defaultfromdisplayname, "***", "g", "");
await _settingmanager.setasync(emailsettingnames.smtp.enablessl, "true", "g", "");
await _settingmanager.setasync(emailsettingnames.smtp.port, "465", "g", "");
await _settingmanager.setasync(emailsettingnames.smtp.usedefaultcredentials, "false", "g", "");
後使用 iemailsender _emailsender就可以正常發郵件了
郵件傳送需要模板,那麼模板又有多個語言版本,或者乙個模板通過本地化進行語言的翻譯。
abp是這樣設計,它首先進行郵件模板emailtemplatedefinition定義,它是相當郵板組裝的元資料metadata,郵件的頭部,它內容有名稱,是否是模板 (若不是,由abpemailtemplateoptions提供defaultlayout),它的模板內容定義在emailtemplatecontributorlist裡面,它存在多個語言版本的,它還有一些其它增強屬性的。
而emailtemplate才是完全的內容,它包括有模板定義,以及郵件內容(要不要設定模板,將模板裡的})替換成內容
abpemailtemplateoptions儲存著所有模板提供者列表,怎麼樣讓自定義的模板放在abpemailtemplateoptions,並通過iemailtemplatedefinitionmanager進行管理,它的操作又是怎麼樣的
它在iemailtemplatedefinitionprovider進行定義,由iemailtemplatedefinitionmanager進行填充,儲存在其列表中,要提供查詢
操作步驟,由iemailtemplateprovider獲取模板內容(這個模擬較重要,呼叫iemailtemplatedefinitionmanager,itemplatelocalizer,istringlocalize***ctory,
abpemailtemplateoptions)獲取到模板內容,再由itemplaterender 渲染
其定義emailtemplatedefinition:佔位符,名字,是否模板,本地化,貢獻者列表
iemailtemplatedefinitionprovider:郵件模版定義提供者 :define方法,新增模板到郵件模板定義的上下文裡面。(即上下文
有多少個模板)模板定義有個add方法提供新增到貢獻者列表
iemailtemplatecontributor:郵件模版貢獻者: 基於模板初始化上下文進行 initialize。
它是利用ivirtualfileprovider提供的模板,它有乙個,也可以是多語言的
iemailtemplatedefinitionmanager:郵件模版定義管理者:執行提供者的define方法填充字典,以便獲取乙個模板定義,所有模板定義列表
emailtemplatedefinitioncontext: dictionary
emailtemplateinitializationcontext:郵件定義emailtemplatedefinition以及iserviceprovider
iemailtemplateprovider方法
itemplaterender 模板渲染
iemailtemplateprovider:獲取模板
python 發郵件 python發郵件
python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。這是乙個簡單的語法,用來建立乙個smtp物件,稍後將演示如何用它來傳送電子郵件 import smtplib smtpobj smtplib.smtp ...
發郵件原理
發 郵件原理 一 郵件伺服器和電子郵箱 郵件伺服器 要在internet 上提供電子郵件功能,必須有專門的電子郵件伺服器。例如現在 internet 很多提供郵件服務的廠商 sina sohu 163 等等他們都有自己的郵件伺服器。這些伺服器類似於現實生活中的郵局,它主要負責接收使用者投遞過來的郵件...
定時發郵件
1.新建服務,新增安裝程式,生成解決方案 在dubug資料夾下複製檔案到d盤cehsi資料夾下 例 2.將installutil.exe 檔案拷貝到ceshi下 在c windows microsoft.net framework 對應的版本路徑下可以找到 3.以管理員身份執行cmd,定位到測試資料...