Java. Send Email via own SMTP server

Несмотря на то, что в последнее время стало модным и популярным отправка сообщений, кодов подтверждения, уведомлений через sms, боты WhatsApp, Viber, Telegram, необходимость отправки писем, средствами JAVA все равно присутствует.

Отправка письма через Ваш собственный SMTP сервер, не представляет абсолютно никаких сложностей.

Нам понадобится всего лишь пакет javax.mail. Лучше добавить его в приложение средствами MAVEN

<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>

 

или GRADLE:

compile group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2'

 

Сам код тривиален:

import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
....

final String fromEmail = "subscription@it-notepad.com"; //requires valid email id
final String password = "OWN_PASSWORD"; // correct password for emailid
final String toEmail = "test@it-notepad.com";

Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST); //SMTP Host
props.put("mail.smtp.port", "587"); //TLS Port
props.put("mail.smtp.auth", "true"); //enable authentication
// props.put("mail.smtp.starttls.enable", "true"); //раскомментировать, если используем TLS

props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");

Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() {
     @Override
     protected PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(fromEmail, password);
     }
});

session.setDebug(true);//используем только в режиме дебаг
try {

     Message message = new MimeMessage(session);
     message.setFrom(new InternetAddress(fromEmail));
     message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(toEmail));
     message.setSubject(subject);
     message.setText(text);
     message.setContent(text, "text/html; charset=utf-8");
     Transport.send(message);

} catch (MessagingException e) {
     throw new RuntimeException(e);
}

 

Leave a Reply

Please disable your adblocker or whitelist this site!