我正在尝试构建一个应用,将批量报告电子邮件发送到各种主机的多个地址。我正在使用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中的邮件守护程序)说它没有交付。
问题是,我需要将该消息存储在我的数据库中以供进一步通知。 是否可以从我的应用程序中获取该消息?
答案 0 :(得分:2)
在学习JavaMail时,JavaMail FAQ是你的朋友。 This entry和this entry解决了您的问题。另外,请务必阅读有关common mistakes。
的条目