我一直在尝试来自多个资源的很多东西,例如Read Inbox Java2s 和How to get the list of available folders in a mail account using JavaMail
我正在成功发送电子邮件,但是为了确保邮件发送成功,我需要阅读已发送邮件文件夹中的电子邮件这是否可以使用smtp?如果有,怎么样?
目前我甚至在与stroe的交锋中陷入困境。我发现无法通过这些步骤
Store store = session.getStore();
和store.connect();
我不知道imap
或pop3
。它们可能在我们的服务器上甚至没有配置,但是如果smtp
没有使用,那么我已准备好使用这些协议进行处理,尽管我正在使用stmp
发送邮件。我在以下代码中尝试了很多编辑,但没有任何帮助
String host = "mysite.smtp.com";
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "myport");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
String user = "myname";
String password = "mypassword";
return new PasswordAuthentication(user, password);
}
});
Store store = session.getStore(); // had tried writing "imaps" here
store.connect(host, null, null);
//store.connect(); also tried this
Folder inbox = store.getFolder("INBOX"); //actually i need "SENT"
if (inbox == null) {
System.out.println("No INBOX");
System.exit(1);
}
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
System.out.println("Message " + (i + 1));
messages[i].writeTo(System.out);
}
inbox.close(false);
store.close();
答案 0 :(得分:1)
您无法使用smtp阅读电子邮件,您需要使用imap。 pop3无法提供帮助,因为它只允许您阅读收件箱。
根据您的意思&#34;成功发送&#34;,send方法的成功返回将告诉您您想知道的内容。
另请注意,根据您使用的邮件服务器,发送的邮件不会自动显示在“已发送的邮件”中。夹;发送邮件后,您可能需要自己复制它们。 (Gmail会自动执行此操作,但并非所有其他服务器都这样做。)
如果您真正想知道的是该消息已成功传递到目标邮件服务器并且所有地址都有效,那就更难了。 JavaMail FAQ有更多信息。
答案 1 :(得分:0)
我知道我迟到了。我在使用广泛的邮件发送功能维护软件时遇到了类似的问题。我最终创建了一个JUnit扩展来编写使用SMTP服务器模拟的集成测试。
请查看github.com/sleroy/fakesmtp-junit-runner/。顺便说一下,它是开源的。
答案 2 :(得分:0)
请参阅此链接:
How to save sent items mail using the Java mail API?
使用JAVAMAIL API发送邮件服务
另请注意,根据您使用的邮件服务器,发送的邮件不会自动显示在“已发送邮件”文件夹中;发送邮件后,您可能需要自己复制它们。 (Gmail会自动执行此操作,但并非所有其他服务器都这样做。)