2012-08-01 25 views
1

我正嘗試構建一個應用程序,以將大量報告電子郵件發送到具有各種主機的許多地址。我正在使用Javamail,我仍然在學習它。JavaMail針對未發送的電子郵件獲取消息(至Gmail或Ymail)

我找到了一個例子,並嘗試發送電子郵件與我的公司服務器作爲主機(讓我們說xyz公司)。

這裏是示例代碼

package mailexample; 

import javax.mail.*; 
import javax.mail.internet.*; 


public class MailExample { 
public static void send(String smtpHost, int smtpPort, 
    String from, String to, 
    String subject, String content) { 

    try { 

     java.util.Properties props = new java.util.Properties(); 
     props.put("mail.smtp.host", smtpHost); 
     props.put("mail.smtp.port", ""+smtpPort); 
     Session session = Session.getDefaultInstance(props, null); 
     //Store store = session.getStore(); 
     //Folder folder = store.getFolder("INBOX"); 
     //System.out.println(folder.getMessage(1)); 

     Message msg = new MimeMessage(session); 
     msg.setFrom(new InternetAddress(from)); 
     msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
     msg.setSubject(subject); 
     msg.setText(content); 

     Transport.send(msg); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static void main(String[] args) throws Exception { 
    try { 
     send("mail.xyz.ac", 25, "[email protected]", "[email protected]", 
     "title", "content"); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 

它工作正常,我得到一個錯誤堆棧跟蹤時的地址是無效的。 但是,只有當我發送電子郵件到相同的服務器/主機是mail.xyz.ac時纔會發生這種情況。

如果我發送電子郵件給一些隨機的gmail或ymail地址(可能不存在),我的應用程序返回成功消息,但之後沒有任何事情發生,發件人收件箱中只有一條消息(如Gmail中的郵件程序守護程序)這表示它沒有交付。

問題是,我需要將該消息存儲在我的數據庫中以獲取進一步的通知。 是否可以從我的應用程序獲取該消息?

回答

2

JavaMail FAQ是學習JavaMail時的朋友。 This entrythis entry解決您的問題。此外,請務必閱讀有關common mistakes的條目。

+0

所以答案是我們可以,但不能保證它會起作用。而我仍然不明白如何實現它:( – Salingga 2012-08-03 02:46:24