I am trying to write a simple mail sender class that would receive a bunch of arguments and using those will send an email out using our Exchange 2010 server. While authentication etc. seem to work fine, I am getting the following exception when the code is actually trying to send the email (I think). I have ensured that the authentication is working and I get a transport back from the session, but still it fails. Could anyone shed some like on what I am doing wrong or missing? Thanks.
Exception:
javax.mail.MessagingException: [EOF]
       at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481)
       at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1512)
       at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054)
       at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
       at javax.mail.Transport.send0(Transport.java:189)
       at javax.mail.Transport.send(Transport.java:140)
       at com.ri.common.mail.util.MailSender.sendHTMLEmail(MailSender.java:75)
       at com.ri.common.mail.util.MailSender.main(MailSender.java:106)
Relevant code:
import 
java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailSender
{
    public static void sendHTMLEmail( String fromEmailId, String toEmailId, String host, String hostUserName,
            String hostPassword, String mailSubject, String mailBody )
    {
        // Get system properties.
        Properties props = System.getProperties();
        // Setup mail server
        props.put( "mail.transport.protocol", "smtp" );
        props.put( "mail.smtp.host", host );
        props.put( "mail.smtp.auth", "true" );
        final String hostUName = hostUserName;
        final String hPassword = hostPassword;
        Authenticator authenticator = new Authenticator()
        {
            protected PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication( hostUName, hPassword );
            }
        };
        // Get the default Session object.
        Session session = Session.getDefaultInstance( props, authenticator );
        try
        {
            // Create a default MimeMessage object.
            MimeMessage message = new MimeMessage( session );
            // Set From: header field of the header.
            message.setFrom( new InternetAddress( fromEmailId ) );
            // Set To: header field of the header.
            message.addRecipient( Message.RecipientType.TO, new InternetAddress( toEmailId ) );
            // Set Subject: header field
            message.setSubject( mailSubject );
            // Send the actual HTML message, as big as you like
            message.setContent( mailBody, "text/html" );
            // Send message
            Transport.send( message, message.getAllRecipients() );
            System.out.println( "Sent message successfully...." );
        }
        catch( Exception mex )
        {
            mex.printStackTrace();
        }
    }
    public static void main( String[] args )
    {
        String to = "
[email protected]";
        String from = "
[email protected]";
        String host = "correctHostForExch2010";
        String user = "correctUser";
        String password = "CorrectPassword";
        String subject = "Test Email";
        String body = "Hi there. This is a test email!";
        MailSender.sendHTMLEmail( from, to, host, user, password, subject, body );
    }
}
EDIT:  I turned on debugging and it says
MAIL FROM:<
[email protected]> 530 5.7.1 Client was not authenticated 
DEBUG SMTP: got response code 530, with response: 530 5.7.1 Client was not authenticated. 
Why would that be when the session authentication succeded?