Google Code 提供下列語言介面: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Mail Service Java API (郵件服務 Java API) 支援使用 JavaMail (javax.mail) 介面來傳送電子郵件。
如需詳細資訊,請參閱 Sun 的 JavaMail API 參考資料。
若要傳送電子郵件訊息,應用程式會先準備 MimeMessage 物件,然後以 Transport 類別的靜態方法 send() 傳送該物件。郵件使用 JavaMail Session 物件建立。Session 和 Transport 不需要其他設定,即可在「應用服務引擎」郵件服務中使用。
import java.util.Properties;
import javax.mail.AddressException;
import javax.mail.InternetAddress;
import javax.mail.MessagingException;
import javax.mail.MimeMessage;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
// ...
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
String msgBody = "...";
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("admin@example.com"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("user@example.com"));
msg.setSubject("Your Example.com account has been activated");
msg.setText(msgBody);
Transport.send(msg);
} catch (AddressException e) {
// ...
} catch (MessagingException e) {
// ...
}
呼叫郵件服務是非同步的,會立即傳回。郵件服務會管理連絡收件者的郵件伺服器和傳送郵件的程序。如果郵件無法傳送給任一收件者,或如果收件者的郵件伺服器傳回「退回」訊息,則錯誤的郵件會退還寄件者。
寄件者和收件者電子郵件地址在 JavaMail 中會使用 InternetAddress 類別的實例來表示。建構函式以字串形式接受電子郵件地址,而如果電子郵件地址不是有效電子郵件地址,則會引發 AddressException。
若要設定寄件者地址,應用程式會呼叫 MimeMessage 物件中的 setFrom() 方法。寄件者必須是應用程式已註冊之開發人員的電子郵件地址,或以「Google 帳戶」登入之目前要求之使用者的電子郵件地址。
MimeMessage 物件中有多種方法可以建立收件者。addRecipient() 方法會接受收件者類型和電子郵件地址,並將其新增到該類的收件者清單中。收件者類型可以是 Message.RecipientType.TO、Message.RecipientType.CC 或 Message.RecipientType.BCC。
您可以使用 setReplyTo() 方法設定「回覆」地址。
藉由呼叫 MimeMessage 物件中的方法,您可以建立郵件的內容。setSubject() 方法設定主旨,而 setText() 方法設定 (純文字) 本文內容。
基於安全性考量,郵件服務不允許在外寄電子郵件訊息中隨意自定標頭。部分標題可被郵件服務覆寫,例如郵件傳送日期。其他加入外寄電子郵件的標頭會被移除。
您可以使用多組件郵件來傳送含檔案附件的郵件,或在純文字郵件本文外加入 HTML 訊息本文。您可以建立 MimeMultipart 物件以包含組件,然後為每個附件或其他郵件本文建立 MimeBodyPart 物件,然後加以新增到容器。最後,將容器指派給 MimeMessage 內容。
import javax.mail.MimeBodyPart;
import javax.mail.MimeMultipart;
import javax.mail.Multipart;
import javax.activation.DataHandler;
// ...
String htmlBody; // ...
byte[] attachmentData; // ...
Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(htmlBody, "text/html");
mp.addBodyPart(htmlPart);
MimeBodyPart attachment = new MimeBodyPart();
attachment.setFileName("manual.pdf");
attachment.setContent(attachmentData, "application/pdf");
mp.addBodyPart(attachment);
message.setContent(mp);
基於安全性的考量,郵件部分和附件必須是數種允許的類型之一,且附件檔名必須以該類型可辨識的副檔名結束。如需允許的類型和檔案名稱副檔名的清單,請參閱總覽:附件
應用程式收不到電子郵件訊息。
應用程式無法使用 JavaMail 介面來連線其他郵件服務以傳送或接收電子郵件訊息。新增至 Transport 或 Session 的 SMTP 設定會被忽略。
所有低階的服務 API 功能都可在 JavaMail 介面中使用。
低階 API 包括將郵件傳送給所有應用程式管理員的方法。若要在 JavaMail 進行此動作,請使用 admin@. ("admin"、AT 符號和句號) 做為收件者。