spring - 如何使用 spring 集成在电子邮件正文中附加文件

标签 spring email integration jakarta-mail

我遇到了一种情况,我需要在电子邮件正文而不是标题中附加文件。例如,在 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

  1. 将出站消息适配器连接到 JavaMailSender (你可能已经有了)
  2. 构造一个正则 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/

相关文章:

java - 为什么向Spring组件注入(inject)BeanFactory是正常的,而向Spring Bean注入(inject)BeanFactory却不正常?

java - Spring 和 Abstract 类 - 在抽象类中注入(inject)属性

python - 如何在 Google App Engine 中验证传入电子邮件地址的发件人?

java - 如何将 drools 集成到 Jersey 休息 Web 服务中

java - 如何在 Caffeine Cache Spring Boot 的 application.properties 层为每个缓存设置不同的规范

java - 返回 List<Object[]> 的 Spring Data

php - 设计 PHP 电子邮件处理程序页面的样式?

c# - SPUtility.SendEmail() 总是返回 false

google-maps - 集成 fullPage.js 和 google map api

integration - 如何在talend集成中检索重复记录