Вы можете сделать так, чтобы Glassfish предоставлял сеанс JavaMail, позволяя коду приложения быть независимым от поставщика.
Создание сеанса JavaMail с использованием интерфейса администратора Glassfish:
Ресурсы-> Сеансы JavaMail.
Ключевые атрибуты:
- JNDI : mail / somevalue
- Почтовый хост : email.us-east-1.amazonaws.com
- Адрес отправителя по умолчанию : адрес электронной почты источника
- Транспортный протокол : aws
- Класс транспортного протокола : com.amazonaws.services.simpleemail.AWSJavaMailTransport
В форме также требуются значения для «пользователя по умолчанию», но, насколько я могу судить, она не будет использоваться.
Кроме того, вам необходимо добавить следующие свойства в сеанс:
- mail.aws.password : ваш секретный ключ AWS
- mail.aws.user : ваш ключ доступа AWS
Код вашего приложения может получить сеанс посредством инъекции:
@Resource(name="mail/somevalue")
private Session mailSession;
Чтобы отправить электронное письмо с использованием введенного сеанса
Message msg = new MimeMessage(mailSession);
try {
msg.setSubject(subject);
msg.setText(body);
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
msg.setFrom();
Transport t = session.getTransport();
if (!t.isConnected()) {
t.connect();
}
t.sendMessage(msg, null);
} catch (MessagingException ex) {
// Handle exception
} catch (UnsupportedEncodingException ex) {
// Handle exception
}
Вызов msg.setFrom () заполнит поле «От» сообщения значением, содержащимся в свойстве сеанса «mail.user», которое берется из поля сеанса JavaMail «Отправители по умолчанию». Адрес "