如何在java中获取被退回的邮件
我正在这个应用程序中实现一个批量邮件应用程序 我可以连接到服务器并将电子邮件发送到目标地址,但我想识别未送达的邮件如何在java中获取被退回的邮件,java,spring,spring-boot,email,hmail-server,Java,Spring,Spring Boot,Email,Hmail Server,我正在这个应用程序中实现一个批量邮件应用程序 我可以连接到服务器并将电子邮件发送到目标地址,但我想识别未送达的邮件 public static void main(String[] args) { Properties props = System.getProperties(); props.setProperty("mail.host", host); props.setProperty("mail.user&q
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());
}
}
通过使用下面的程序,我能够获得电子邮件主题。但基于这个主题,很难确定确切的未送达邮件
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());
}
}
publicstaticvoidmain(字符串[]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);
试一试{
Session Session=Session.getInstance(props,null);
Store Store=session.getStore(协议);
会话session1=Session.getInstance(props,
新的javax.mail.Authenticator(){
受保护的密码身份验证getPasswordAuthentication(){
返回新的PasswordAuthentication(用户、密码);
}
});
System.out.println((store.isConnected())?“已连接”:“尚未连接”);
store.connect(主机、端口、用户、密码);
文件夹收件箱=store.getFolder(“收件箱”);
System.out.println(“文件夹>>>”+收件箱.getFullName()+“”+收件箱.getURLName()+“”+文件夹类型+”您可以使用下面的代码
MimeMessage payload = (MimeMessage) message.getPayload();
Multipart mp = (Multipart) payload.getContent();
for (int i = 0; i < mp.getCount(); i++) {
BodyPart bodyPart = mp.getBodyPart(i);
StringWriter writer = new StringWriter();
IOUtils.copy(bodyPart.getInputStream(), writer);
System.out.println("Content inputstream: " + writer.toString());
}
MimeMessage负载=(MimeMessage)message.getPayload();
Multipart mp=(Multipart)payload.getContent();
对于(int i=0;i
SMTP协议不支持这一点。所有“被退回”的电子邮件都是在某个邮件服务器上生成的,对于这些电子邮件应该包含什么内容没有RFC(甚至不要求发送它们)@talex我已经修改了我的问题,没有必要再发送它们,但我想识别被退回的邮件。我使用的是Hmailserver,有没有办法识别它们。一般来说,没有办法识别它们。你可以使用启发式来尝试。请你解释一下。诊断代码信息是邮件内容的一部分可以使用以下代码读取d。这里payload是包含有关消息的所有数据的对象,您可以通过它获取确切的需求。我没有任何方法使用message.getPayload();
我明白了。您可以使用此依赖项。这里是对它的快速查看