【发布时间】:2020-08-28 10:36:28
【问题描述】:
我正在这个 applica This link 中实现一个批量邮件应用程序。
我能够连接到服务器并将电子邮件发送到目标地址,但我想识别未送达的邮件。
通过使用以下程序,我可以获得电子邮件主题。但是根据主题,很难确定确切的未投递邮件。
public static void main(String[] args) {
Properties props = System.getProperties();
props.setProperty("mail.host", host);
props.setProperty("mail.user", user);
props.setProperty("mail.from", from);
//props.setProperty("mail.debug", "true");
//props.setProperty("mail.domain", domain);
try {
Session session = Session.getInstance(props, null);
Store store = session.getStore(protocol);
Session session1 = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});
System.out.println((store.isConnected())?"Already Connected":"Not Already Connected");
store.connect(host, port, user, password);
Folder inbox = store.getFolder("INBOX");
System.out.println("folder>>>" + inbox.getFullName() + "<<<");
System.out.println("folder URLName>>>" + inbox.getURLName() + "<<<");
System.out.println((inbox.exists()?"folder exists":"folder does not exist"));
int folderType = inbox.getType();
System.out.println("folder type>>>" + folderType + "<<<");
inbox.open(Folder.READ_WRITE);
System.out.println("Message Count:" + inbox.getMessageCount());
Message[] m = inbox.getMessages();
for (int x = 0; x < m.length; x++) {
System.out.println(m[x].getSubject());
}
inbox.close(false);
store.close();
}catch(Exception e) {
System.out.println(e.getLocalizedMessage());
}
}
我怎样才能收到未送达的邮件(退回)。
我使用 Hmailserver 作为我的邮件服务器。
【问题讨论】:
-
SMTP 协议不支持。所有“退回”的电子邮件都是在某个邮件服务器上生成的,没有关于这些 emais 应该包含什么的 RFC(甚至没有要求发送它们)。
-
@talex 我已经修改了我的问题,不需要再次发送它们,但我想识别被退回的邮件。我正在使用 Hmailserver,有什么方法可以识别它们。
-
一般来说没有办法识别它们。你可以使用启发式来尝试。
标签: java spring spring-boot email hmail-server