1

我正在尝试构建一个应用程序来将批量报告电子邮件发送到具有不同主机的多个地址。我正在使用 Javamail,不过我仍在学习它。

我找到了一个示例并尝试使用我的公司服务器作为主机(假设 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, "asdf@xyz.ac", "qwer@xyz.ac",
        "title", "content");
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}
}

它工作正常,当地址无效时我得到一个错误堆栈跟踪。但这只有在我向同一服务器/主机(即 mail.xyz.ac)发送电子邮件时才会发生。

如果我向一些随机的 gmail 或 ymail 地址(可能不存在)发送电子邮件,我的应用程序会返回成功消息,但之后什么都没有发生,只有发件人收件箱中的消息(如 gmail 中的 mailer-daemon)说它是没送到。

问题是,我需要将该消息存储在我的数据库中以供进一步通知。是否可以从我的应用程序中获取该消息?

4

1 回答 1

2

JavaMail FAQ是您学习 JavaMail 的朋友 。这个条目这个条目解决了你的问题。另外,请务必阅读有关常见错误的条目。

于 2012-08-01T17:56:07.047 回答