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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.