Many SMTP servers use an authentication system as an extra layer of security in their mail transport. If you need to send email to such a server with JavaMail, the library provides a convenient abstraction of the process. First, create an anonymous inner class that implements javax.mail.Authenticator and contains the password authentication information:
Authenticator authenticator = new Authenticator() { private PasswordAuthentication authentication; { authentication = new PasswordAuthentication("username", "password"); } protected PasswordAuthentication getPasswordAuthentication() { return authentication; } };
Next, create instances of java.util.Properties and javax.mail.Session that will be used to build the message transport. The important differences from JavaMail usage here are the extra auth property and the passing of the authenticator object to the mail session. (Note that all values of the Properties instance are strings — this is required by the class. Booleans, integers, et cetera should be passed as strings to this object.)
Properties props = new Properties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", "smtp.somewhere.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, authenticator);
Now that our Session is prepared, we can send the message as normal. The authentication model is carried within the mail session, so each message can take it in and reuse its information.
Message message = new MimeMessage(session); message.setFrom(new InternetAddress("from@somewhere.com")); message.addRecipient(RecipientType.TO, new InternetAddress("xyz@somewhere.com")); message.setSubject("Hello world!"); message.setContent("Sent via an SMTP server with authentication.", "text/plain"); Transport.send(message);
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…