java - Amazon SES 自定义 header 列表-取消订阅不起作用

标签 java http-headers amazon-ses

我试图在我发送的电子邮件中添加“List-Unsubscribe” header (通过 amazon ses),但是当我看到收到的电子邮件时,里面没有这样的 header 。我需要它来减少垃圾邮件投诉的数量并提高送达率和声誉。

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

PS:使用其他供应商(如 Mandrill 或 Sendgrid)它可以工作,但我真的需要它在亚马逊

最佳答案

所以...我找到了解决方法。 如果您想向消息添加自定义 header ,请始终使用 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;
}

关于java - Amazon SES 自定义 header 列表-取消订阅不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29524413/

相关文章:

java - 如何在 Java String 中用一个双引号替换两个双引号?

java - Java中类的等价关系和自然排序

java - 如何让我的 JavaFX 程序加载文件?

authentication - 具有Spring Security的自定义Http授权 header

python - 带有 Django 的 Amazon SES SMTP

java - 在 Java 中,使用 logback 框架,有没有办法动态配置聊天日志消息的限制

php - PHP 的缓存控制和过期 header

c# - .netcore 中的 HttpClient 会自动在 header 中添加一个空格

javascript - 仅当收件人的服务器支持 SMTP TLS 时,如何通过 AWS SES 发送电子邮件?

python - 如何替换/覆盖 EmailMultiAlternatives 的默认 header