【问题标题】:Parsing Raw Emails from Amazon SES in Java在 Java 中解析来自 Amazon SES 的原始电子邮件
【发布时间】:2017-06-21 09:01:57
【问题描述】:

这是我面临的问题:

  1. 我从 Amazon SES 接收到 S3 存储桶的原始电子邮件,触发了 Lambda 函数。
  2. 该函数使用以下方法从存储桶中读取数据(原始电子邮件):

    S3Object s3Object = s3Client.getObject(new GetObjectRequest(srcBucket, srcKey));

  3. 然后将原始电子邮件转换为 InputStream 并创建 Java Mail (javax.mail) MimeMessage 对象:

    MimeMessage mimeMessageObj = new MimeMessage(newSession, inputStreamObj);

问题是: 你如何解析出邮件中的所有信息(包括附件)。

MimeMessage 似乎有专门的方法(getSubject 等),但它们返回空值。在填充这些字段之前是否需要进行特殊解析?我发现了很多直接使用这些特殊方法创建电子邮件的示例,但是逆向读取原始电子邮件提要的过程似乎无法正常工作。手动解析是唯一的选择吗?我认为这将非常乏味且容易出错。

【问题讨论】:

    标签: java email amazon-web-services jakarta-mail


    【解决方案1】:

    如果您收到空值,则该消息不是真正的 MIME 格式消息。确保它是,并且消息的开头没有空行。

    【讨论】:

      【解决方案2】:

      您可以尝试使用org.apache.commons.mail.util 包中的MimeMessageParser

      您的代码应如下所示:

      MimeMessage mimeMessageObj = new MimeMessage(newSession, inputStreamObj);
      MimeMessageParser mimeParser = new MimeMessageParser(mimeMessageObj);
      
      try {
          mimeParser.parse();
          List<javax.mail.Address> to = mimeParser.getTo();
          String from = mimeParser.getFrom();
          String subject = mimeParser.getSubject();
          String bodyPlain = mimeParser.getPlainContent();
          String bodyHtml = mimeParser.getHtmlContent();
          long timestamp = mime.getSentDate().getTime();
      } catch (Exception e) {
          System.out.println("Something went wrong");
          e.printStackTrace();
      }
      

      这是您需要的 maven 依赖项:

      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-email</artifactId>
          <version>1.3</version>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-05
        • 1970-01-01
        • 2020-08-28
        • 2016-06-04
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 2016-06-10
        相关资源
        最近更新 更多