JavaMail not sending SMTP email via postfix

10,338

from the log Ok: queued as DB1249A618 the mail is correctly recived by SMTP server. so problem may be misconfigured server (maybe an antispam filter) or wrong mail address.

Look here https://serverfault.com/questions/485505/get-postfix-to-forward-roots-mail to check your server configuration is right.

Share:
10,338
CodeMed
Author by

CodeMed

Updated on July 03, 2022

Comments

  • CodeMed
    CodeMed almost 2 years

    I am trying to set up JavaMail to send and receive emails using Postfix, which is installed on my CentOS7 development box. I have confirmed that postfix is able to display received emails by typing MAIL=/home/root/Maildir into the terminal, followed by return and then mail, which lists all received emails for the user account. But yet when I log in as root and check to see the received emails in the CentOS 7 terminal, there are no new emails after I run my Javamail code as described below. How can I get Javamail to send smtp email?

    Here is my class:

    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    
    //Send a simple, single part, text/plain e-mail
    public class TestEmail {
    
      public void send(){
         // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!
         String to = "root@localhost";
         String from = "username@localhost";
         // SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!
         String host = "localhost";
    
         // Create properties, get Session
         Properties props = new Properties();
    
         //http://docs.oracle.com/javaee/6/api/javax/mail/Session.html
         // If using static Transport.send(),
         // need to specify which host to send it to
         props.put("mail.smtp.host", host);
         // To see what is going on behind the scene
         props.put("mail.debug", "true");
         Session session = Session.getInstance(props);
    
         try {
             // Instantiate a message
             Message msg = new MimeMessage(session);
    
             //Set message attributes
             msg.setFrom(new InternetAddress(from));
             InternetAddress[] address = {new InternetAddress(to)};
             msg.setRecipients(Message.RecipientType.TO, address);
             msg.setSubject("A new record was just added.");
             msg.setSentDate(new Date());
    
             // Set message content
             msg.setText("This is a test of sending a " +
                         "plain text e-mail through Java.\n" +
                         "Here is line 2.");
    
             //Send the message
             Transport.send(msg);
         }
         catch (MessagingException mex) {
             // Prints all nested (chained) exceptions as well
             mex.printStackTrace();
         }
     }
    }//End of class  
    

    I call the class as follows:

    TestEmail em = new TestEmail();
    em.send();
    

    The eclipse console produces the following logs when the above code is run:

    DEBUG: JavaMail version 1.5.0-b01
    DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
    DEBUG: Tables of loaded providers
    DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
    DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
    DEBUG SMTP: useEhlo true, useAuth false
    DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
    220 localhost.localdomain ESMTP Postfix
    DEBUG SMTP: connected to host "localhost", port: 25
    
    EHLO localhost.localdomain
    250-localhost.localdomain
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    DEBUG SMTP: Found extension "PIPELINING", arg ""
    DEBUG SMTP: Found extension "SIZE", arg "10240000"
    DEBUG SMTP: Found extension "VRFY", arg ""
    DEBUG SMTP: Found extension "ETRN", arg ""
    DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
    DEBUG SMTP: Found extension "8BITMIME", arg ""
    DEBUG SMTP: Found extension "DSN", arg ""
    DEBUG SMTP: use8bit false
    MAIL FROM:<username@localhost>
    250 2.1.0 Ok
    RCPT TO:<root@localhost>
    250 2.1.5 Ok
    DEBUG SMTP: Verified Addresses
    DEBUG SMTP:   root@localhost
    DATA
    354 End data with <CR><LF>.<CR><LF>
    Date: Mon, 5 Jan 2015 13:12:02 -0800 (PST)
    From: username@localhost
    To: root@localhost
    Message-ID: <1738078707.0.1420492322780.JavaMail.username@localhost.localdomain>
    Subject: A new record was just added.
    MIME-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    
    This is a test of sending a plain text e-mail through Java.
    Here is line 2.
    .
    250 2.0.0 Ok: queued as DB1249A618
    QUIT
    221 2.0.0 Bye
    sessionID is: 0816C244BDBAAD890D82138DC3801962