AEM as a Cloud Service: SMTP電子郵件傳遞失敗
當郵件服務設定為非預設連線埠直接連線至外部SMTP主機,或必要的進階網路連線埠轉送設定遺失或不正確時,Adobe Experience Manager as a Cloud Service (AEMaaCS)中的SMTP電子郵件傳送可能會失敗。 為SMTP目的地設定「進階網路」,並將Day CQ Mail Service更新為使用Proxy主機和對應的Proxy連線埠,以解決此問題。
說明 description
環境
Adobe Experience Manager as a Cloud Service (所有版本)
問題/症狀
嘗試透過SMTP傳送電子郵件時(例如透過轉出工作或非同步工作),電子郵件傳送會失敗。 在記錄中觀察到以下錯誤:
Caused by: org.apache.commons.mail.EmailException: Sending the email to the following server failed : your-smtp-host:465
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1298) [ org.apache.commons.commons-email:1.6.0]
...
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: your-smtp-host, 465; timeout 60000
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2209) [ com.sun.mail.javax.mail:1.6.2]
...
Caused by: java.net.SocketTimeoutException: Connect timed out
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:546)
- 使用SMTP的工作或程式電子郵件傳送失敗。
- 當郵件服務嘗試連線到連線埠465上的SMTP伺服器時,記錄會顯示連線逾時。
- 應檢閱Day CQ Mail Service設定,確認AEM as a Cloud Service使用必要的Proxy主機和對應的Proxy連線埠,而非直接連線至外部SMTP主機和連線埠。
根本原因
在AEM as a Cloud Service中,若使用非預設的SMTP連線埠(例如465)而沒有必要的進階網路連線埠轉送設定,或郵件服務設定為直接使用外部SMTP主機和目的地連線埠,而非對應的代理主機和連線埠,SMTP傳送可能會失敗。
解決方法 resolution
請嘗試下列步驟來解決問題:
-
確保目標AEM as a Cloud Service程式和環境已啟用進階網路,並且您擁有更新網路和設定的必要許可權。
-
在Cloud Manager中,開啟相關的程式和環境。 移至進階網路,並為您的SMTP服務設定彈性的連線埠輸出規則。 使用類似下列範例的規則,將主機名稱和連線埠取代為SMTP提供者所需的值。 為您的環境使用檔案範圍內的適當
portOrig值。 儲存設定並套用至環境。code language-json { "nonProxyHosts": [ ] , "portForwards": [ { "name": "smtp.example.com", "portDest": 465, "portOrig": 30465 } ] } -
將郵件服務設定為使用Proxy主機和對應的Proxy連線埠,而不是直接連線到外部SMTP主機和連線埠。 請使用下列值:
smtp.host:$[ env:AEM_PROXY_HOST;default=proxy.tunnel]smtp.port:<mapped-port>(或以上設定的portOrig值)smtp.user:您SMTP使用者名稱的秘密支援值smtp.password:您SMTP密碼的秘密支援值from.address:有效的寄件者地址,例如no-reply@example.comsmtp.ssl:目的地SMTP服務使用連線埠465時,true
-
使用支援的AEM as a Cloud Service秘密支援設定提供SMTP使用者名稱和密碼,而非將常值認證值儲存在程式碼中。
-
透過您的標準Cloud Manager部署程式部署更新的設定,然後重新執行傳送電子郵件的程式並確認連線成功,以測試電子郵件傳遞。