В этом посте я покажу вам, как настраивать 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
Немає коментарів:
Дописати коментар