msgsend Demo Program in JavaMail 1.4.7

Q

What is the msgsend.java in javamail1_4_7.zip?

✍: FYIcenter.com

A

msgsend.java in javamail1_4_7.zip is a demo program that sends out a simple text email message through a SMTP server.

msgsend.java is located at \local\javamail-1.4.7\demo\msgsend.java. Below is the usage description of msgsend.java:

Description:
	Send a simple text message. Optionally saves a copy
	of the outgoing message in a folder (record-folder).

	Most parameters to this program are optional. When
	the program is run, it interactively asks for
	the "To" and "Subject" fields if not already available.
	Then the program expects the body of the message.
	After you type in the body, hit Ctrl-D on Unix
	systems or Ctrl-Z on Windows systems to send
	the message.

Usage:
	java msgsend -L <store-url> -T <protocol> -H <host> -U <user>
		-P <passwd> -s <subject> -o <from> -c <cc> -b <bcc>
		-f <record> -M <smtphost> [-d] <to>

Options:

   -L <store-url> : URL of the store for the record-folder
   -T <protocol> : If <store-url> is not present, this indicates
		  the store protocol for the record-folder.
   -H <host>	: If <store-url> is not present, this indicates
		  the hostname for the record-folder.
   -U <user>	: If <store-url> is not present, this indicates
		  the username for the record-folder.
   -P <passwd>	: If <store-url> is not present, this indicates
		  the password for the record-folder.
   -f <record>	: name of record-folder.
   -M <smtphost> : Host name of SMTP server.  Defaults to "localhost"
		  which often works on UNIX but rarely on Windows.
   -s <subject>	: Subject of message to be sent
   -o <from>	: From address of message to be sent
   -c <cc>	: Cc address of message to be sent
   -b <bcc>	: Bcc address of message to be sent
   -d		: Turn on session debugging.
   -a <file>	: Include file as an attachment with the message

   Argument:

   <to>	    : To address of message to be sent

Here is an execution session of msgsend.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

local\javamail-1.4.7\demo>java -cp .;..\mail.jar msgsend 
   -d -M smtp.junkmail.com john@yahoo.com
To: john@yahoo.com
Subject: Test
DEBUG: setDebug: JavaMail version 1.4.7
Testing
.
^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.junkmail.com", port 25, isSSL false
javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.com, po
rt: 25;
  nested exception is:
        java.net.ConnectException: Connection timed out: connect
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:65
4)
        at javax.mail.Service.connect(Service.java:295)
        at javax.mail.Service.connect(Service.java:176)
        at javax.mail.Service.connect(Service.java:125)
        at javax.mail.Transport.send0(Transport.java:194)
        at javax.mail.Transport.send(Transport.java:124)
        at msgsend.main(msgsend.java:188)

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.openServer.
  • msgsend.java takes the email message body from the standard input. we need to press Ctrl-Z to end the input stream.
  • The connection exception is expected, because smtp.junkmail.com is not valid SMTP server.

Back to FAQ for JavaMail API and Implementations.

2016-01-25, 1294👍, 0💬