問題:有沒有人通過JavaMail從SMTP服務器成功發送電子郵件到hotmail帳戶?如果可以的話,你可以放上可以工作的代碼嗎?使用javamail將電子郵件發送到hotmail時遇到困難
我可以使用我的JavaMail代碼將電子郵件發送到Gmail和雅虎帳戶,但我無法將任何電子郵件發送到hotmail帳戶。如果我使用手機或其他電子郵件客戶端並使用與我的JavaMail代碼相同的SMTP服務器,那麼我的確可以將電子郵件發送到Hotmail帳戶。這讓我相信JavaMail留下了一個Hotmail似乎認爲很重要的標誌。使用Apache Commons JavaMail實現會產生相同的結果。
try{
Email email = new SimpleEmail();
email.setSmtpPort(Integer.parseInt(port));
email.setAuthenticator(new DefaultAuthenticator(from, MyUtilities.getSystemPWD(from)));
email.setDebug(true);
email.setHostName(host);
email.setFrom(from);
email.setSubject(subject);
email.setMsg("test");
email.addTo(to);
email.setStartTLSRequired(true);
email.send();
} catch(Exception ex){
MyLogger.log("MyUtilities.sendEmail: Messaging error",ex);
Logger.getLogger(MyUtilities.class.getName()).log(Level.SEVERE, "MyUtilities.sendEmail: Messaging error", ex);
}
答: 有一個公認的答案之下,但問題的根本原因是Hotmail的,需要額外的認證頭(SPF & DKIM),證明了從地址您與相關域名SMTP服務器。使用中間SMTP服務器,如sendgrid,可以解決這個問題,因爲他們會自動爲您做... ..付出代價。
您也可以嘗試自己添加所需的SPF和DKIM標題。
爲什麼不能發送電子郵件到hotmail? – user2793390
誰說這是不可能的? –
您是否嘗試過比較手機中的電子郵件和您的Java代碼之間的電子郵件標頭/源代碼?我假設你手機上的那個是HTML,而你的java代碼中的那個是純文本。不是說這是問題,而是一個主角。 – user2793390