Несмотря на то, что в последнее время стало модным и популярным отправка сообщений, кодов подтверждения, уведомлений через 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); }