Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中获取被退回的邮件_Java_Spring_Spring Boot_Email_Hmail Server - Fatal编程技术网

如何在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();
我明白了。您可以使用此依赖项。这里是对它的快速查看