2018年6月29日 星期五

如何使用Exchange online及Powershell進行電子報/賀卡發送

在端午節前夕的最後一個上班日(5/16)下午 , 一如往常 , 小編依然跟一大堆的雜事在打交道 ,

客戶大陸的O365訂閱要上線需要開通 ; 另一個客戶的Windows 2012 R2 .Net Framework 4.0

安裝不起來 ,  就在此時 , 另一個生技公司的客戶打電話來求助 , 之前有幫他們把老舊的Lotus

Notes R5 Domain全部移轉至Exchange Online , 客戶告訴我在端午節前夕 , 他們想對38,000

名會員發送含有一張圖片的HTML電子賀卡 , 小編之前有做過使用PowerShell同時對3000人

發送1MB , 3MB , 5MB , 8MB的Exchange 2013 POC 壓力測試經驗 , 想說客戶這個需求


應該不複雜 , 就開始動手執行 ,  一開始我是使用Send-MailMessage結合一些參數來寄送

端午節電子賀卡 , 但在測試信箱收到的確是含圖片檔的html附件檔,無法達到客戶的需求 ,

直接在郵件內文中顯示出來






所以小編試圖以其它做法來完成客戶提的需求 , 後來我找到一篇文章有提到如何處理在Html

崁入圖片的文章 網路上流傳用Send-Message夾HTML做法  , 使用的參數如以下

(以下範例的O365訂閱/帳號/密碼資訊並不存在,不用去測試 XD )

$EmailFrom = "admin@ems543.onmicrosoft.com"
$EmailSubject = "Email including images in HTML"
$smtpServer = "smtp.office365.com"
$SendTo = "user1@ems543.onmicrosoft.com"
$Image = "c:\dbf.jpg"
$att1 = new-object Net.Mail.Attachment($Image)
$att1.ContentType.MediaType = "image/png"
$att1.ContentId = "Attachment"
$att1.ContentDisposition.Inline = $true
$att1.ContentDisposition.DispositionType = "Inline"
$mailmessage = New-Object system.net.mail.mailmessage
$mailmessage.Attachments.Add($att1)
$body = "<p style='font-family: Calibri, sans-serif'>
<img src='cid:Attachment' /><br />
This is test .
</p>"
$mailmessage.from = $emailfrom
$mailmessage.To.add($sendto)
$mailmessage.Subject = $emailsubject
$mailmessage.Body = $body
$mailmessage.IsBodyHTML = $true
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,587)
$SMTPClient.EnableSSL = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("admin@ems543.onmicrosoft.com","p@ssw0rd123");
$SMTPClient.Send($mailmessage)

即可完成使用Send-MailMessage結合參數發送電子報 , 38,000人的電子賀卡發送結合

Foreach + Send-MailMessage即可完成 , 結果如下圖 , 下個節日寄送賀卡就派上用場囉!





但需注意Office 365針對每日寄送電子郵件 , 是有限制的

 



資料來源 :  https://technet.microsoft.com/zh-tw/library/exchange-online-limits.aspx

沒有留言:

張貼留言