Сайт присвячений розробці web-додатків на основі мови програмування Java. Матеріали javasource.ru охоплюють теми знаходяться у взаємозв'язку: сервер додатків GlassFish, фреймворк JavaServer Faces, середовище розробки NetBeans, on-line сервіс GitHub, контейнер сервлетів Apache Tomcat, технологія Java Web Start, набір специфікацій і документації Java Platform Enterprise Edition - JEE
Додатки, розгорнуті на сервері GlassFish або будь-якому іншому JavaEE-сумісному сервері додатків, часто мають передбачати можливість відправки електронних листів. Завдяки API JavaMail, що є частиною специфікації JavaEE, відправляти електронні листи з додатків JavaEE досить просто.
Щоб реалізувати можливість відправки електронних листів з програми JavaEE, ми повинні мати доступ до поштового сервера. Зазвичай це реалізується за рахунок використання Простого Протоколу Передачі Пошти - Simple Mail Transfer Protocol. Коротко - SMTP.
Конфігурація сервера GlassFish для відправки пошти
Перш ніж ми зможемо відправляти електронні листи з наших програм JavaEE, нам знадобиться провести деякий конфігурація сервера додатків GlassFish. Спочатку потрібно додати новий сеанс javamail, увійшовши в систему до web-консолі адміністрування, розгорнувши вузол Ресурси (Resources) в дереві панелі навігації в лівій частині сторінки і потім клацнувши по вузлу Сеанси javaMail (JavaMailSessions).
Щоб створити новий сеанс JavaMail, ми повинні клацнути по кнопці Новий (New ...) і виставити певні значення в полях і списках відкрилася сторінки.
1. JNDIName - необхідно ввести JNDI-ім'я для нашого сеансу JavaMail. Це ім'я має бути допустимим і унікальним. Додатки будуть використовувати його для отримання доступу до поштового сервісу.
2. MailHost - вказуємо DNS-ім'я поштового сервера, який ми будемо використовувати для відправки електронних листів.
3. DefaultUser - вказуємо ім'я користувача за замовчуванням, яке використовується для з'єднання з поштовим сервером.
5. Status - прапорець, який дозволяє включати або відключати даний сеанс javaMail.
6. StoreProtocol - використовується для вказівки значення протоколу сховища почтовго сервера, який дозволяє нашим програмам отримувати електронні листи з нього. Допустимі значення цього поля: imap, imaps, pop3 b pop3s.
Зверніть увагу! Протокол сховища ігнорується, якщо додатки тільки посилають електронні листи. Як правило, наші програми посилають електронні листи набагато частіше, ніж отримують їх. Якщо всі програми, іпсользующіе нашу поштову сеанс, будуть тільки посилати листи, то значення поляStoreProtocol, так само як і поляStoreProtocolClass ігноруються.
7. StoreProtocolClass - в цьому полі вказується клас реалізації постачальника послуг, відповідний вказаною протоколу сховища.
8. TransportProtocol - використовується для вказівки значення транспортного протоколу поштового сервера, за яким наші програми зможуть відправляти електронні листи. Допустимі значення цього поля: smtp і smtps.
9. TransportProtocolClass - вказується клас реалізації постачальника послуг, відповідний вказаною транспортного протоколу
b. com.sun.mail.smtp.SMTPSSLTransport - для транспортного протоколаsmtps
10. Debug - цей прапорець дозволяє нам включати або відключати усунення несправностей для цього сеансу JavaMail
Після введення всієї необхідної інформації для нашого сервера залишиться лише клацнути по кнопці ОК у верхній правій частині основної панелі сторінки, щоб створити сеанс JavaMail. Тепер створений сеанс зможуть використовувати розгорнуті програми.
Реалізація функціональності доставки електронної пошти
Отримавши налаштований сеанс Javamail, ми можемо досить легко реалізувати функціональність доставки електронної пошти. Нижче представлені зразки коду класу та форми для відправки електронної пошти на Java з сервера додатків GlassFish.
Зразок коду на Java
Зразок XHTML-коду сторінки написання
Перше, що нам потрібно зробити - инжектировать (ввести) екземпляр створюваного сеансу JavaMail, додаючи на рівні класу змінну типу javax.mail.Session і декоруючи її анотацією @Resource. Значення атрибута name цієї анотації повинно відповідати JNDI-імені, яке ми дали нашому сеансу JavaMail в процесі його створення.
Потім ми повинні створити екземпляр javax.mail.internet.MimeMessage, передаючи об'єкт сеансу в якості параметра його конструктору.
Якщо ми повинні надіслати повідомлення декільком адресатам, можна використовувати метод addRecipients () з класу javax.mail.Message (або один з його підкласів, таких як javax.mail.internet.MimeMessage). Цей метод приймає тип приймача в якості свого першого параметра і масив javax.mail.Address - в якості другого. Повідомлення буде відправлено всім одержувачам в масиві. При використанні цього методу замість setRecipient () ми не обмежуємося єдиним типом одержувача для одержувачів.
Після вказівки одного або декількох одержувачів слід додати тему повідомлення і текст, викликаючи відповідно методи setSubject () і setTex () на примірнику повідомлення.
Тепер ми готові відправити наше повідомлення. Для цього досить викликати статичний метод send () на класі javax.mail.Transport. даний метод приймає екземпляр повідомлення в якості параметра.