Run msgsend.java with Gmail SMTP Server

Q

How to run msgsend.java in javamail1_4_7.zip with Gmail using SSL SMTP protocol? I have a valid Gmail email account.

✍: FYIcenter.com

A

msgsend.java in javamail1_4_7.zip can be used to send out a simple text mail message through Gmail server using SSL SMTP protocol. Here is an execution session of folderlist.java:

fyicenter>cd \local\javamail-1.4.7\demo

local\javamail-1.4.7\demo>java -version 
java version "1.8.0_45"

local\javamail-1.4.7\demo>javac -cp ..\mail.jar msgsend.java
   -Dmail.smtp.ssl.enable=true msgsend 
   -d -M smtp.gmail.com john@yahoo.com
To: john@yahoo.com
Subject: Test
DEBUG: setDebug: JavaMail version 1.4.7
Test
^Z
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.s
mtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
220 smtp.gmail.com ESMTP i125sm23950046ywe.28 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465

EHLO localhost
250-smtp.gmail.com at your service, [...]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN O
AUTHBEARER XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<john@localhost>
530-5.5.1 Authentication Required. Learn more at
530 5.5.1  https://support.google.com/mail/answer/14257 i125sm23950046ywe.28 - g
smtp
DEBUG SMTP: got response code 530, with response: 530-5.5.1 Authentication 
Required. Learn more at
530 5.5.1  https://support.google.com/mail/answer/14257 i125sm23950046ywe.28 - g
smtp

RSET
250 2.1.5 Flushed i125sm23950046ywe.28 - gsmtp
DEBUG SMTP: MessagingException while sending, THROW:
com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Le
arn more at
530 5.5.1  https://support.google.com/mail/answer/14257 i125sm23950046ywe.28 - g
smtp

        at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2
108)
        at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
        at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
        at javax.mail.Transport.send0(Transport.java:195)
        at javax.mail.Transport.send(Transport.java:124)
        at msgsend.main(msgsend.java:188)
QUIT

The output shows that:

  • The mail.jar contains JavaMail API classes like javax.mail.Transport.
  • The mail.jar contains SMTP implementation classes like com.sun.mail.smtp.SMTPTransport.mailFrom.
  • msgsend.java takes the email message body from the standard input. we need to press Ctrl-Z to end the input stream.
  • JavaMail 1.4.7 supports SSL SMTP protocol.
  • imap.gmail.com server supports SSL SMTP protocol on port 465.
  • JVM "-Dmail.smtp.ssl.enable=true" option is used to turn on SSL.
  • The SMTP send failed exception is expected, because no authentification is provided.

Back to FAQ for JavaMail API and Implementations.

2016-01-27, 1178👍, 0💬