【问题标题】:How to get Bounced mails in java如何在java中获取退回的邮件
【发布时间】: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


【解决方案1】:

你可以使用下面的代码

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


}

【讨论】:

  • 你能解释一下吗?
  • 诊断代码信息是消息内容的一部分,可以使用以下代码读取。这里的有效载荷是包含有关您的消息的所有数据的对象,您可以通过它获取您的确切要求。
  • 我对@9​​87654323@没有任何方法
  • 我明白了。那么你可以使用这个依赖。这里是它的快速查看docs.oracle.com/javaee/6/api/javax/mail/internet/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2017-05-08
  • 2011-12-14
  • 2021-05-21
相关资源
最近更新 更多