我正在嘗試使用Mailgun發送電子郵件。 據mailgun,我使用下面的代碼:Android javamail 501 5.5.4無效參數
public static void TestMail() throws Exception
{
Properties props = System.getProperties();
props.put("mail.smtps.host","smtp.mailgun.org");
props.put("mail.debug", "true");
props.put("mail.verbose", "true");
props.put("mail.smtps.auth","true");
Session session = Session.getInstance(props, null);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("[email protected]"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]", false));
msg.setSubject("Hello");
msg.setText("Testing some Mailgun awesomness");
msg.setSentDate(new Date());
SMTPTransport t =
(SMTPTransport)session.getTransport("smtps");
t.setStartTLS(true);
t.connect("smtp.mailgun.com", "[email protected]*********.mailgun.org", "b071d**********");
t.sendMessage(msg, msg.getAllRecipients());
System.out.println("Response: " + t.getLastServerResponse());
t.close();
}
我使用從下載的JavaMail API:https://code.google.com/p/javamail-android/downloads/list
現在在調試中顯示以下信息:
DEBUG: JavaMail version 1.4.1
DEBUG: not loading file: /system/lib/javamail.providers
DEBUG: java.io.FileNotFoundException: /system/lib/javamail.providers: open failed: ENOENT (No such file or directory)
DEBUG: not loading resource: /META-INF/javamail.providers
DEBUG: not loading resource: /META-INF/javamail.default.providers
DEBUG: failed to load any providers, using defaults
DEBUG: not loading resource: /META-INF/javamail.default.address.map
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.address.map
DEBUG: not loading file: /system/lib/javamail.address.map
DEBUG: java.io.FileNotFoundException: /system/lib/javamail.address.map: open failed: ENOENT (No such file or directory)
DEBUG: failed to load address map, using defaults
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc.,1.4.1]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.mailgun.com", port 465, isSSL true
220 ak47 ESMTP ready
DEBUG SMTP: connected to host "smtp.mailgun.com", port: 465
EHLO
501 5.5.4 Invalid argument
HELO
501 5.5.4 Invalid argument
我不知道這個錯誤是什麼意思?當我搜索時沒有人指出錯誤或原因的確切原因。它可能是SSL或我的系統缺少一些Java庫?或者我下載的java lib不正確。
但正如您在調試中看到的,它能夠成功連接到smtp.mailgun.com。那爲什麼這個錯誤呢? 請幫助我。
感謝
如果JavaMail沒有發送主機地址,那是因爲JDK,呃,Android非Java運行時,無法計算出主機的名稱。您可以將[mail.smtp.localhost屬性](https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html)設置爲您想要的主機名在HELO/EHLO命令中使用。此外,你可能想嘗試更新的[JavaMail for Android](https://java.net/projects/javamail/pages/Home#JavaMail_for_Android)。 –
@BillShannon OP有什麼理由不應該使用當前版本? Google Code中的JAR是真實的還是別人的替代品? – EJP
@Jim那麼,如果我設置了mail.smtp.localhost propery,那麼足以滿足主機名的要求? 我的意思是,如何使用命令helo/ehlo。 或者簡單地說,我需要在這裏做什麼? –