Amazon SES 自定义标头列表取消订阅不起作用 [英] Amazon SES custom header List-Unsubscribe isn't working

查看:32
本文介绍了Amazon SES 自定义标头列表取消订阅不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm tryin to add the "List-Unsubscribe" header in my sent emails (through amazon ses) but when i see the received email there's no such header in it. I need it to reduce the number of spam complaints and to improve deliverability and reputation.

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

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

PS: Using others providers such as Mandrill or Sendgrid it works, but i really need it at amazon

推荐答案

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

So... i found a workaround. If you want to add a custom header to your message, always use a RawMessage, not a simple one.

像这样:

    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;
}

这篇关于Amazon SES 自定义标头列表取消订阅不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆