[AX2012]發送廣播郵件

AX 2012可使用MAPI或者SMTP發送郵件,MAPI是客戶端方法,須要outlook的協做,而SMTP則是服務器端方法,要求SMTP容許AOS服務器經過它中繼。這裏要講的就是如何經過SMTP發送郵件廣播。服務器

  • 設置SMTP郵件服務器:轉到 System administration>Setup>System>E-mail parameters,outgoing mail server 填寫SMTP服務器名稱或者IP,local computer name能夠留空,勾選NTLM不要求輸入用戶密碼,若是是在sever tier上運行就使用AOS服務的帳號,若是是在客戶端則使用客戶端用戶的帳號。
  • 配置EMAIL模板:轉到 Organization administration>Setup>E-mail templates,勾選form上的show system e-mail複選框,只有系統郵件才能用於郵件廣播。建立一個新的郵件模板,能夠爲郵件模板建立多個語言版本,郵件的具體內容可使用HTML或者XSLT兩種格式之一,二者內聯變量的格式不一樣。好比使用HTML,HTML code是這樣: 
<p>Dear %UserName%,</P>
<br/ >
<p>Please .....</p>
<br/ >

這裏%username%會自動替換爲AX用戶名稱。email template有個batch group選項,選擇一個batch group能夠將郵件經過batch job來發送,在發送大量郵件時有助於改善性能。session

  • 發送廣播郵件:轉到System administration>Periodic>E-mail processing>E-mail broadcast,選擇一個email模板,receiver能夠選擇全部用戶或者在線用戶,點擊OK後若是不是使用batch(email temlate的batch group留空不等於使用empty batch group,而確實是不使用batch group),郵件會發送給相應用戶的郵件地址,用戶的郵件地址是在用戶的options裏面設定的。若是使用batch發送郵件,AX將爲每一個郵件建立一個batch job,運行SysEmailBatch,由它將郵件發送出去。表面上比較簡單,而其實是系統針對每一個用戶調用SysEmailSystemTable::sendMail(),SysEmailSystemTable::sendMail有個參數_isTraceable,默認爲false,表示直接調用SysEmailBatch來完成發送;若是_isTraceable爲true,那麼郵件會被添加到表SysOutgoingEmailTable等候發送。SysEmailBatch會檢查郵件模板的batch group,若是有設置則把本身添加到batch jobs隊列,不然直接運行run()方法發送郵件。有意思的是SysEmailBatch.run()也會檢查它的一個類變量isTraceAble,和上面同樣,若是爲true,郵件會被再一次試圖放到表SysOutgoingEmailTable等候發送。看到的狀況是類變量isTraceAble被初始化爲false,因此SysEmailBatch.run()直接調用SysMailerNet.sendMail()最終發送郵件出去。 那些SysOutgoingEmailTable表中的郵件咱們能夠在System administration>Periodic>E-mail processing>E-mail sending status查看,這些郵件又是如何發送出去的呢?這時候咱們須要使用System administration>Periodic>E-mail processing>Batch建立一個發送郵件的batch job,由它按期調用SysEmailDistributor來派發郵件,SysEmailDistributor直接使用SysMailerNet將郵件依次派發

若是發生廣播郵件時咱們選擇對在線用戶發送,系統會對每個用戶session安排一封郵件,若是一個用戶有不少session(很是常見,管理員可能更多),它將收到N多重複的郵件,讓人不得不吐槽。性能

相關文章
相關標籤/搜索