Please Note:
1. java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
Use "com.sum.mail:javax.mail" instead of "javax.mail:javax.mail-api"
2. Must issue a STARTTLS command first.
props.put("mail.smtp.starttls.enable","true");
3. javax.mail.AuthenticationFailedException: failed to connect, no password specified?val session = Session.getDefaultInstance(properties, new SMTPAuthenticator())
import javax.mail._ import javax.mail.internet._ import java.util.Date import java.util.Properties import scala.collection.JavaConversions._ class MailAgent(to: String, cc: String, from: String, password: String,subject: String, content: String) { var message: Message = createMessage message.setFrom(new InternetAddress(from)) setToCcRecipients message.setSentDate(new Date()) message.setSubject(subject) message.setText(content) // throws MessagingException def sendMessage { Transport.send(message) } def createMessage: Message = { val properties = new Properties() properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); //properties.put("mail.debug", "true"); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.starttls.enable","true"); properties.put("mail.smtp.EnableSSL.enable","true"); val session = Session.getDefaultInstance(properties, new SMTPAuthenticator()) return new MimeMessage(session) } // throws AddressException, MessagingException def setToCcRecipients { setMessageRecipients(to, Message.RecipientType.TO) if (cc != null) { setMessageRecipients(cc, Message.RecipientType.CC) } } // throws AddressException, MessagingException def setMessageRecipients(recipient: String, recipientType: Message.RecipientType) { // had to do the asInstanceOf[...] call here to make scala happy val addressArray = buildInternetAddressArray(recipient).asInstanceOf[Array[Address]] if ((addressArray != null) && (addressArray.length > 0)) { message.setRecipients(recipientType, addressArray) } } // throws AddressException def buildInternetAddressArray(address: String): Array[InternetAddress] = { // could test for a null or blank String but I'm letting parse just throw an exception return InternetAddress.parse(address) } private class SMTPAuthenticator extends Authenticator { override def getPasswordAuthentication():PasswordAuthentication = { new PasswordAuthentication(from, password) } } }
Reference:
http://stackoverflow.com/questions/24807472/java-mail-issue-with-session-getinstance
http://stackoverflow.com/questions/6610572/javax-mail-authenticationfailedexception-failed-to-connect-no-password-specifi
http://stackoverflow.com/questions/26774057/how-to-send-emails-via-spring/29676871#29676871
No comments:
Post a Comment