我正在尝试使用camel-mail组件使用Amazon Simple Email Service从我的应用程序发送电子邮件。我尝试使用camel-mail 组件而不是camel-ses 组件的原因是camel-ses 不支持附件。
我用这个来 uri:
smtp://$smtpHost:$smtpPort?username=$smtpUsername&password=$smtpPassword&mail.smtp.ssl.enable=true&mail.smtp.ssl.required=true&mail.smtp.auth=true
但我在运行时收到错误:
com.sun.mail.smtp.SMTPSendFailedException: 554 Transaction failed: Illegal header 'breadcrumbId'.
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2114)
at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1900)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1122)
at org.apache.camel.component.mail.DefaultJavaMailSender.send(DefaultJavaMailSender.java:124)
at org.apache.camel.component.mail.MailProducer.process(MailProducer.java:49)
因此,亚马逊似乎对可以发送哪些标头非常严格,而 Camels 方法与 SES 并不能很好地配合使用:
Camel 将所有交换的 IN 标头复制到 MimeMessage 标头。
深入研究 Source,我可以看到该类org.apache.camel.component.mail.MailBinding
具有接受 a 的构造函数HeaderFilterStrategy
:
public MailBinding(HeaderFilterStrategy headerFilterStrategy, ContentTypeResolver contentTypeResolver) {
this.headerFilterStrategy = headerFilterStrategy;
this.contentTypeResolver = contentTypeResolver;
}
如何配置 camel-mail 以使用自定义HeaderFilterStrategy
?