0

我正在实现一个批量邮件应用程序,在这个应用程序这个链接中。

我能够连接到服务器并将电子邮件发送到目标地址,但我想识别未送达的邮件。

通过使用以下程序,我可以获得电子邮件主题。但是根据主题,很难确定确切的未投递邮件。

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 作为我的邮件服务器。

4

1 回答 1

0

您可以使用下面的代码

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());


}
于 2020-08-28T11:32:01.997 回答