Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - JavaMail07 мая 2011это Java API предназначенное для получения и отправки электронной почты с использованием протоколов SMTP, POP3 и IMAP. JavaMail является частью платформы Java EE, но так же доступен в качестве дополнительного пакета для использования в Java SE приложениях. На данный момент актуальной версией является JavaMail 1.4.3, релиз которой состоялся 20 ноября 2009 года. Существует так же альтернативная реализация JavaMail с открытым исходным кодом GNU JavaMail которая реализует только спецификацию JavaMail версии 1.3, предоставляя возможность работы только протоколом NNTP, что позволяет читать и отсылать статьи в новостных группах. Примеры использования
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
// Отправка простого сообщения с типом контента "text/plain"
public class TestEmail {
public static void main {
// Сюда необходимо подставить адрес получателя сообщения
String to = "sendToMailAddress";
String from = "sendFromMailAddress";
// Сюда необходимо подставить SMTP сервер, используемый для отправки
String host = "smtp.yourisp.net";
// Создание свойств, получение сессии
Properties props = new Properties;
// При использовании статического метода Transport.send
// необходимо указать через какой хост будет передано сообщение
props.put;
// Включение debug-режима
props.put;
Session session = Session.getInstance;
try {
// Создание объекта сообщения
Message msg = new MimeMessage;
// Установка атрибутов сообщения
msg.setFrom);
InternetAddress address = {new InternetAddress};
msg.setRecipients;
msg.setSubject;
msg.setSentDate);
// Установка тела сообщения
msg.setText("This is a test of sending a " +
"plain text e-mail through Java.\n" +
"Here is line 2.");
// Отправка сообщения
Transport.send;
}
catch {
// Печать информации об исключении в случае его возникновения
mex.printStackTrace;
}
}
}
Пример отправки составного сообщения с файловыми вложениями
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendMailUsage {
public static void main {
// Сюда необходимо подставить адрес получателя сообщения
String to = "sendToMailAddress";
String from = "sendFromMailAddress";
// Сюда необходимо подставить SMTP сервер, используемый для отправки
String host = "smtpserver.yourisp.net";
// Создание свойств, получение сессии
Properties props = new Properties;
// При использовании статического метода Transport.send
// необходимо указать через какой хост будет передано сообщение
props.put;
// Включение debug-режима
props.put;
// Получение сессии
Session session = Session.getInstance;
try {
// Получение объекта транспорта для передачи электронного сообщения
Transport bus = session.getTransport;
// Устанавливаем соединение один раз
// Метод Transport.send отсоединяется после каждой отправки
bus.connect;
// Обычно для SMTP сервера необходимо указать логин и пароль
bus.connect;
// Создание объекта сообщения
Message msg = new MimeMessage;
// Установка атрибутов сообщения
msg.setFrom);
InternetAddress address = {new InternetAddress};
msg.setRecipients;
// Парсинг списка адресов разделённых пробелами. Строгий синтаксис
msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse);
// Парсинг списка адресов разделённых пробелами. Более мягкий синтаксис.
msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse);
msg.setSubject;
msg.setSentDate);
// Установка контента сообщения и отправка
setTextContent;
msg.saveChanges;
bus.sendMessage;
setMultipartContent;
msg.saveChanges;
bus.sendMessage;
setFileAsAttachment;
msg.saveChanges;
bus.sendMessage;
setHTMLContent;
msg.saveChanges;
bus.sendMessage;
bus.close;
}
catch {
// Печать информации обо всех возможных возникших исключениях
mex.printStackTrace;
// Получение вложенного исключения
while != null) {
// Получение следующего исключения в цепочке
Exception ex = mex.getNextException;
ex.printStackTrace;
if ) break;
else mex = ex;
}
}
}
// Сообщение, состоящее из одной части с типом контента text/plain.
public static void setTextContent throws MessagingException {
// Установка типа контента
String mytxt = "This is a test of sending a " +
"plain text e-mail through Java.\n" +
"Here is line 2.";
msg.setText;
// Альтернативный способ
msg.setContent;
}
// Сообщение с типом контента multipart/mixed. Обе части имеют тип контента text/plain.
public static void setMultipartContent throws MessagingException {
// Создание и заполнение первой части
MimeBodyPart p1 = new MimeBodyPart;
p1.setText;
// Создание и заполнение второй части
MimeBodyPart p2 = new MimeBodyPart;
// Here is how to set a charset on textual content
p2.setText;
// Создание экземпляра класса Multipart. Добавление частей сообщения в него.
Multipart mp = new MimeMultipart;
mp.addBodyPart;
mp.addBodyPart;
// Установка объекта класса Multipart в качестве контента сообщения
msg.setContent;
}
// Прикрепление файла в качестве вложения. Используется JAF FileDataSource.
public static void setFileAsAttachment
throws MessagingException {
// Создание и заполнение первой части
MimeBodyPart p1 = new MimeBodyPart;
p1.setText("This is part one of a test multipart e-mail." +
"The second part is file as an attachment");
// Создание второй части
MimeBodyPart p2 = new MimeBodyPart;
// Добавление файла во вторую часть
FileDataSource fds = new FileDataSource;
p2.setDataHandler);
p2.setFileName);
// Создание экземпляра класса Multipart. Добавление частей сообщения в него.
Multipart mp = new MimeMultipart;
mp.addBodyPart;
mp.addBodyPart;
// Установка экземпляра класса Multipart в качестве контента документа
msg.setContent;
}
// Добавление в первую часть html-контента.
// Оптправка данных любого другого типа производится аналогичным образом.
public static void setHTMLContent throws MessagingException {
String html = "<html><head><title>" +
msg.getSubject +
"</title></head><body><h1>" +
msg.getSubject +
"</h1><p>This is a test of sending an HTML e-mail" +
" through Java.</body></html>";
// HTMLDataSource является внутренним классом
msg.setDataHandler));
}
/*
* Внутренний класс работает аналогично JAF datasource и добавляет HTML в контент сообщения
*/
static class HTMLDataSource implements DataSource {
private String html;
public HTMLDataSource {
html = htmlString;
}
// Возвращаем html строку в InputStream.
// Каждый раз возвращается новый поток
public InputStream getInputStream throws IOException {
if throw new IOException;
return new ByteArrayInputStream);
}
public OutputStream getOutputStream throws IOException {
throw new IOException;
}
public String getContentType {
return "text/html";
}
public String getName {
return "JAF text/html dataSource to send e-mail only";
}
}
}
Просмотров: 1895
|