我遇到了一种情况,我需要在电子邮件正文而不是标题中附加文件。例如,在 Microsoft Outlook 中,如果消息类型设置为 Rich Text,则可以将文件作为附件拖放到电子邮件正文中。我如何使用 Spring Integration MessageBuilder 来做到这一点?到目前为止,我正在使用它来发送附件,但文件附加到电子邮件的 header 而不是正文中。
Message<?> msg = MessageBuilder.withPayload("")
.setHeader(MailHeaders.SUBJECT, subject )
.setHeader(MailHeaders.ATTACHMENT_FILENAME, args[0].toString())
.build();
如果有人给我代码示例将会有很大帮助!提前致谢
最佳答案
您的代码显示您忽略了消息本身的关键部分,即 payload
- 将出站消息适配器连接到
JavaMailSender
(你可能已经有了) 构造一个正则
MimeMessage
使用org.springframework.mail.javamail.JavaMailSender
你连线并org.springframework.mail.javamail.MimeMessageHelper
,如public void sendEmail(){ MimeMessage message = mailSender.createMimeMessage(); //mailSender is an instance of JavaMailSender from 1. try{ MimeMessageHelper helper = new MimeMessageHelper(message,true); //set the fields helper.setFrom("J'onn Doe"); helper.setTo("SpamRecce"); helper.setSubject("") helper.setText("Text goes here") //load attachment file using spring's help. Basic interface is called a Resource and there are many implementations. Here, I've used the ClassPathResource which means your attachment file must be in your classpath ClassPathResource theAttachment = new ClassPathResource("My File.Doc"); helper.addAttachment("Add the desired filename here.doc",theAttachment); } catch(MessagingException me){ Logger.getAnonymousLogger.info("Something bad happened!); me.printStacktrace(); } mailSender.send(message); }
我不知道您的实现细节,但我相信发送电子邮件的端点应该是终止端点,即电子邮件可以直接从该端点发送,您不需要发送到另一个 channel 。
但是,如果您仍然需要将消息刷新到另一个 channel ,则需要重写您要阅读的代码:
Message<MimeMessage> msg = MessageBuilder.withPayload(message)
.setHeader(MailHeaders.SUBJECT, subject )
.setHeader(MailHeaders.ATTACHMENT_FILENAME, args[0].toString())
.build();
关于spring - 如何使用 spring 集成在电子邮件正文中附加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847022/