2015-01-05 22 views
5

Próbuję skonfigurować JavaMail do wysyłania i odbierania wiadomości e-mail za pomocą Postfix, który jest zainstalowany na moim pudełku rozwojowym CentOS7. Potwierdziłem, że postfix może wyświetlać odebrane wiadomości e-mail, wpisując MAIL=/home/root/Maildir do terminala, a następnie zwrot, a następnie mail, który zawiera listę wszystkich otrzymanych wiadomości e-mail dla konta użytkownika. Ale kiedy loguję się jako root i sprawdzam, czy otrzymałem e-maile w CentOS 7 terminal, po uruchomieniu kodu Javamail nie ma nowych wiadomości e-mail, jak opisano poniżej. Jak uzyskać Javamail wysyłanie wiadomości e-mail smtp?JavaMail nie wysyła wiadomości SMTP za pośrednictwem postfiksu

Oto moja klasa:

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 = "[email protected]"; 
    String from = "[email protected]"; 
    // 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 

Wzywam klasę następująco:

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

Konsola zaćmienie produkuje następujące dzienniki gdy powyższy kod jest uruchamiany:

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:<[email protected]> 
250 2.1.0 Ok 
RCPT TO:<[email protected]> 
250 2.1.5 Ok 
DEBUG SMTP: Verified Addresses 
DEBUG SMTP: [email protected] 
DATA 
354 End data with <CR><LF>.<CR><LF> 
Date: Mon, 5 Jan 2015 13:12:02 -0800 (PST) 
From: [email protected] 
To: [email protected] 
Message-ID: <[email protected]in> 
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 
+1

Pamiętaj, że używasz dość starej wersji JavaMail i możesz chcieć uaktualnić do [bieżącej wersji] (https://java.net/projects/javamail/pages/Home), chociaż jestem pewien, że nie ma nic wspólnego z twoim problemem. –

+1

@BillShannon Dziękujemy! Mój "pom.xml" stwierdza, że ​​używam wersji 1.5.0, ale podobno powinienem zajrzeć do nowszych próbek kodu. – CodeMed

Odpowiedz

1

z logu Ok: queued as DB1249A618 poczta jest poprawnie odbierana przez serwer SMTP. , więc problem może być błędnie skonfigurowany (może to być filtr antyspamowy) lub nieprawidłowy adres e-mail.

Zajrzyj tutaj https://serverfault.com/questions/485505/get-postfix-to-forward-roots-mail, aby sprawdzić, czy konfiguracja serwera jest właściwa.

+1

to jest odpowiedź, jako prawdopodobnie problem przekazywania na Postfix, musisz poprosić o odpowiednią sekcję. Zaktualizowany linkiem do prawdopodobnego rozwiązania (dla ubuntu, ale nie powinien różnić się zbytnio) – Lesto

+1

Technicznie, jest to odpowiedź! :) – alexander

Powiązane problemy