В этом посте я покажу вам, как настраивать JavaMail используя SMTP сервер GMail в Glassfish. Таким образом, можно избежать hardcoding адресов сервера в приложении, и сделать ваше приложение более гибким. Это также минимизирует объем кода.
Установка Glassfish
Во-первых, зайдите в админ панель Glassfish и нажмите JavaMail Sessions. Затем создайте новую конфигурацию сеанса, нажав кнопку "new".
Заполните следующие поля:
JNDI name: mail/mailresource Mail Host: smtp.gmail.com Default User: you_account@gmail.com Default Return Address: you_account@gmail.com
Имя JNDI должно быть с префиксом "mail/".
Используйте свой адрес электронной почты GMail в последних двух полях.
mail.smtp.socketFactory.port: 465 mail.smtp.port: 465 mail.smtp.socketFactory.fallback: false mail.smtp.auth: true mail.smtp.password: <пароль от gmail> mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
Используйте свой действующий GMail пароль в поле mail.smtp.password. Сохраните настройки.
Пример клиента для отправки электронной почты с вложенными файлами
Далее, мы создаем клиент который будет использовать созданную JavaMail службу в Glassfish. Прежде чем мы сможем это сделать, мы должны к нашему приложению подключить библиотеки: AppServ-rt.jar и javaee.jar. Вы можете найти их в Lib каталоге установки Glassfish. Убедитесь, что все библиотеки находятся в вашей build/class-path.
Теперь скачайте и также подключите к нашему приложению JavaMail библиотеку, которую вы можете скачать здесь.
Ниже наведенный пример который строит письмо с тремя вложениями из трех различных источников, и отправляет на e-mail с двум получателям.
Вы должны использовать MIME-типы, чтобы указать тип вложений. Сохраните приведенный ниже код, как Main.java, скомпилируйте и запустите!
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.util.ByteArrayDataSource;
import javax.naming.InitialContext;
public class Main {
public void runTest() throws Exception {
InitialContext ctx = new InitialContext();
Session session = (Session) ctx.lookup("mail/mailresource");
// Или можно использовать инъекцию.
//@Resource(name = "mail/mailresource")
//private Session session;
// Создание email и заголовков.
Message msg = new MimeMessage(session);
msg.setSubject("Тема письма");
msg.setRecipient(RecipientType.TO,
new InternetAddress(
"exam1@devcolibri.com",
"ExamName1"));
msg.setRecipient(RecipientType.CC,
new InternetAddress(
"exam2@devcolibri.com",
"ExamName2"));
msg.setFrom(new InternetAddress(
"admin@devcolibri.com",
"Admin"));
// Сообщение
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("В этом письме есть файлы.");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// Вложение файла 1
messageBodyPart = new MimeBodyPart();
messageBodyPart.setFileName("README1.txt");
messageBodyPart.setContent(new String(
"file 1 content"),
"text/plain");
multipart.addBodyPart(messageBodyPart);
// Вложение файла 2
messageBodyPart = new MimeBodyPart();
messageBodyPart.setFileName("README2.txt");
DataSource src = new FileDataSource("file.txt");
messageBodyPart.setDataHandler(new DataHandler(src));
multipart.addBodyPart(messageBodyPart);
// Вложение файла 3
messageBodyPart = new MimeBodyPart();
messageBodyPart.setFileName("README3.txt");
src = new ByteArrayDataSource(
"file 3 content".getBytes(),
"text/plain");
messageBodyPart.setDataHandler(new DataHandler(src));
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);
// Отправка письма.
Transport.send(msg);
}
public static void main(String[] args) {
Main sendMail = new Main();
try {
sendMail.runTest();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ресурс: www.devcolibri.com
Немає коментарів:
Дописати коментар