在退回的电子邮件中查找电子邮件地址

时间:2014-11-15 04:20:17

标签: regex string email pattern-matching

我正在尝试获取邮件反弹的电子邮件地址,我找到的唯一方法是使用javamail阅读退回的电子邮件,然后尝试查找邮件中包含的电子邮件地址。我能够阅读电子邮件,现在我的挑战是找到其中的电子邮件。 这是我的方法:

public String findEmailInString(String message) {
        String email = "";
        Pattern pat = Pattern.compile("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$");
        Matcher match = pat.matcher(message);
        while (match.matches()) {
            email = match.group();
        }
        return email;
    }

编辑我的邮件采用以下格式: “

This is an informative message sent by mail.simbatech.biz.

The server was not able to deliver your email message 

  Subject: GAtungo
  Date: Fri, 14 Nov 2014 15:52:58 +0300



to the following addresses:

  <gatungowanungai@simbatech.biz> (mail.simbatech.biz: Mailbox does not exist)"

尽管邮件正文中有电子邮件地址,但此方法仍返回null。有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我知道这并没有直接回答这个问题,但这里的正常做法并不是试图解析退回邮件。

相反,当您发送电子邮件时,您为每封发送的电子邮件设置了不同的Return-Path标题。然后,您可以唯一地标识此消息来自哪个用户。

此技术称为VERP