Google Code предлагается на следующих языках: English – Español – 日本語 – 한국어 – Português – Pусский – 中文(简体) – 中文(繁體)
API Java для службы Mail поддерживает интерфейс JavaMail (javax.mail) для отправки сообщений по электронной почте.
Дополнительную информацию можно получить в справочном руководстве по API JavaMail от Sun.
Чтобы отправить сообщение по электронной почте, приложение подготавливает объект MimeMessage, затем отправляет его, вызывая статический метод send() для класса Transport. Сообщение создается с помощью объекта Session JavaMail. Объекты Session и Transport работают в службе Mail App Engine без дополнительной конфигурации.
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) {
// ...
}
Вызовы к службе Mail асинхронны, ответ возвращается сразу. Служба Mail управляет процессом взаимодействия с почтовыми серверами получателей и доставкой сообщения. В случае проблем с доставкой сообщения получателю или при возврате сообщения почтовым сервером получателем отправитель получает сообщение об ошибке.
В JavaMail электронные адреса отправителя и получателей представлены в виде экземпляров класса InternetAddress. Конструктор получает адрес электронной почты в виде строки и вызывает исключение AddressException , если адрес не похож на действительный.
Чтобы задать адрес отправителя, приложение вызывает метод setFrom() для объекта MimeMessage. Отправитель должен быть представлен в виде адреса зарегистрированного разработчика приложения или адреса пользователя для текущего запроса, выполнившего вход с помощью аккаунта Google.
Задать получателей сообщения можно с помощью нескольких методов для объекта MimeMessage. Метод addRecipient() берет тип получателя и адрес и добавляет его к списку получателей данного типа. Получатели могут быть следующих типов: Message.RecipientType.TO, Message.RecipientType.CC и Message.RecipientType.BCC.
С помощью метода setReplyTo() можно указать ответный адрес.
Содержание сообщения можно указать, вызвав методы на объекте MimeMessage. Метод setSubject() устанавливает тему, а метод setText() – тело сообщения в виде обычного текста.
В целях безопасности служба Mail запрещает задавать произвольные сообщения для исходящих электронных сообщений. Некоторые заголовки переопределяются службой, например, дата отправки сообщения. Другие добавляемые к исходящему сообщению заголовки удаляются.
Благодаря сообщениям, состоящим из нескольких частей, можно отправлять сообщения с приложениями или 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 конфигурация игнорируется.
В интерфейсе JavaMail доступны все функции низкоуровневого API службы Mail.
Низкоуровневой API предоставляет удобный метод для отправки почты всем администраторам приложения. Для этого в JavaMail нужно использовать в качестве получателя admin@. ("admin", собака и точка).