2011-10-14 63 views
3

我剛開始使用JavaMail,而且我很難使電子郵件顯示幾件事情。消息發送和接收,但是,當它出現主題和:行是空的。JavaMail - 主題和To字段在電子郵件中爲空

這是我試圖發送電子郵件的功能。我沒有配置任何屬性,所以一切都應該按照默認設置進行。

public void sendEmail(String[] ToEmailAddr, String Subject, String Body){ 

    Session session = Session.getDefaultInstance(fMailServerConfig, null); 
    MimeMessage message = new MimeMessage(session); 
    try { 
    for (int i=0;i<ToEmailAddr.length;i++) { 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(ToEmailAddr[i])); 
    } 
    message.setSubject(Subject); 
    message.setText(Body); 
    Transport.send(message); 
    } 
    catch (MessagingException ex){ 
    logger.error("Cannot send email. " + ex); 
    } 

}

我怎樣才能讓收件人看到的收件人列表和主題行?

+0

你可以運行它的調試設置爲真,看看發生了什麼?有幾天將debug設置爲true,命令行是'java -Dmail.debug = true',其次是擴展道具for smpt。試試看看調試日誌是否有幫助。 – Ali

+0

我必須誠實,我不確定在哪裏查看調試日誌。我正在製作的這個小課是我在自己的機器上部署的一個Web項目的一部分。 雖然我使用Eclipse進行分步調試。據我所見,在調用message.setWhatever()之後,標題沒有被正確設置。 – SpeedBurner

回答

6

原因是軟件包中存在衝突。當我從標準Ja​​vaMail導入時,Tomcat會自動在Web項目的Maven構建中包含它自己的JavaMail包。

在項目的pom.xml文件,我不得不排除Geronimo的JavaMail的是這樣的:

<dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-xmlbeans</artifactId> 
     <version>1.4.1</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-javamail_1.4_spec</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
0

這是因爲Axis2中有它的lib,這是內部Geronimo的javamail_1.4_spec-1.2.jar文件使用它的javax.mail包,一個非常簡單的解決方案將打開jar文件並刪除geronimo jar文件內的包,並將javax.mail包從oracle-sun下載的lib添加到類的路徑中應用程序