【问题标题】:Amazon SES custom header List-Unsubscribe isn't workingAmazon SES 自定义标头列表取消订阅不起作用
【发布时间】:2015-06-13 23:41:54
【问题描述】:

我正在尝试在我发送的电子邮件中添加“列表取消订阅”标题(通过亚马逊 ses),但是当我看到收到的电子邮件时,其中没有这样的标题。我需要它来减少垃圾邮件投诉的数量并提高送达率和声誉。

SendEmailRequest sendEmailRequest = new SendEmailRequest();
sendEmailRequest.putCustomRequestHeader(UNSUBSCRIBE_HEADER, unsuscribeURL);

PS:使用其他提供商,例如 Mandrill 或 Sendgrid,它可以工作,但我在亚马逊确实需要它

【问题讨论】:

    标签: java http-headers amazon-ses


    【解决方案1】:

    所以...我找到了解决方法。 如果您想为消息添加自定义标头,请始终使用 RawMessage,而不是简单的。

    类似这样的:

        SendRawEmailRequest sendRawEmailRequest = new SendRawEmailRequest();
        RawMessage rawMessage = null;
        rawMessage = buildSimpleRawMessage(...);
        sendRawEmailRequest.setRawMessage(rawMessage);
    
    
    private RawMessage buildSimpleRawMessage(String subject, String message, Attachment attachment) {
        RawMessage rawMessage = null;
        try {
            // JavaMail representation of the message
            Session s = Session.getInstance(new Properties(), null);
            MimeMessage mimeMessage = new MimeMessage(s);
    
            // Subject
            mimeMessage.setSubject(subject);
    
            // Add a MIME part to the message
            MimeMultipart mimeBodyPart = new MimeMultipart();
            BodyPart part = new MimeBodyPart();
            part.setContent(message, "text/html");
            mimeBodyPart.addBodyPart(part);
    
            // Add a attachement to the message
            if(attachment!=null){
                part = new MimeBodyPart();
                DataSource source = null;
                source = new ByteArrayDataSource(attachment.getBuf(), attachment.getMimeType());
                part.setDataHandler(new DataHandler(source));
                part.setFileName(attachment.getFileName());
                mimeBodyPart.addBodyPart(part);
            }
    
            mimeMessage.setContent(mimeBodyPart);
            mimeMessage.addHeader(UNSUBSCRIBE_HEADER, unsubscribeURL);
    
            // Create Raw message
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            mimeMessage.writeTo(outputStream);
            rawMessage = new RawMessage(ByteBuffer.wrap(outputStream.toByteArray()));
        } catch (Exception e) {
            logger.error("There was a problem creating mail attachment", e);
            throw Throwables.propagate(e);
        }
        return rawMessage;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      相关资源
      最近更新 更多