使用Azure Communication Service建立SMTP郵件發送服務

使用Azure Communication Service建立SMTP郵件發送服務

前言

多功能事務機有一項功能是Scan to mail,將文件掃描後直接寄送到E-mail,要使用這項功能,需要在事務機上設定SMTP伺服器,Gmail有提供有提供SMTP服務,但需要用個人帳號另外建立一組發送郵件的服務帳號,因此我使用Azure Communication Service服務,可以視為公用帳號,無需使用私人帳號來建立服務用帳號

步驟

  1. 首先到Azure Portal中,搜尋並建立Azure Communication Service服務,建立新的Resource Group以及填入Resource Name後,點選Revive + Create,檢查無誤後點選Create

  2. 建立完成後,點選Go to resource進入Azure Communication Service,點選Access control (IAM)並選擇Role

  3. 選取Reader,再選擇Clone,這個步驟用來建立可以發送Email服務的角色

  4. 輸入自訂角色名稱後,點選Next

  5. 在Permission中,點選Add permissions

  6. 搜尋並選取Microsoft.Communication

  7. 選擇Microsoft.Communication/CommunicationServices Read及Microsoft.Communication/EmailServices Write後,點選Add後,再點選Revice + create,確認無誤後,點選Create


  8. 成功建立後,點選OK

  9. 開啟Cloud Shell介面,要來建立Service Principal,產生密碼供設備驗證用

  10. 在Cloud Shell裡輸入以下指令az ad sp create-for-rbac -n ScanToEmail –years 100,ScanToEmail是Service Principal名稱,–years 100代表過100年後才過期,實際可以依需求給個3~5年左右,接著就會輸出結果,這邊的資訊要自行備份,密碼只會出現一次,若是遺失可以再重新輸入一次相同指令重新產生密碼,appID不會變

  11. 點選Add->Add role assignment

  12. 選擇剛剛建立的CustomRole,點選Next

  13. 點選Select members,找到剛剛建立的Service Principal,點選Review + assign


  14. 接著點選Create a resource,在Marketplace裡搜尋email communication service,選取並開始建立

  15. 選擇相同的Resource group,自行取一個可辨識的名稱,這邊會做檢查,不合法的文字會跳紅字,Data location要與Communication service放在相同位置,我的Communication service是放在East Asia,所以我的location會選擇Asia Pacific,檢查沒問題,選擇Review + create後,再選擇Create

  16. 建立Email communication service完成後,回到Resource Group,進入Communication Service,從左側找到Try Email


  17. 在Send email from的下拉選單中,選取Set up a free Azure subdomain

  18. 在Email service下拉選單中,選擇剛剛建立好的Email communication service,選取Create + Activate,等待建立完成

  19. 建立完成後,就可以在Send email from的下拉選單中,選取剛剛部署好的Azure subdomain,這時Sender email username會自動帶出,只要在Recipient email address輸入個人的email,確認是否可以收到,可以多試幾個不同的email,確認會不會掉信,輸入完選取Send,然後去信箱看看有沒有成功寄到,信件寄出成功會有訊息告知


  20. 我個人是透過Outlook收Gmail的信,確認信件有收到

  21. 如何建立以及設置SMTP client AUTH submission,首先要到Microsoft Entra ID->App registrations,找到前面建立好的Service Principal

    – username: <Azure Communication Services Resource name>.<Entra Application ID>.<Entra Tenant ID>,
    – password: service principal password
    – Server: smtp.azurecomm.net
    – Port: 587
    -TLS: Enabled

結論

  • 目前測試起來,不管是企業內的信箱,或是免費Gmail,都可以收到,不會被當成垃圾信。
  • 此外也有試過外部SMTP測試網站,也可以成功發信,但建議正式上線的時候就不要在外部網站測試,避免認證資訊被側錄。

參考資料

How to create authentication credentials for sending emails using SMTP – An Azure Communication Services Quickstart | Microsoft Learn

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *