2

メールのヘッダーではなく本文にファイルを添付する必要がある状況があります。たとえば、Microsoft Outlook でメッセージ タイプがリッチ テキストに設定されている場合、電子メールの本文に添付ファイルとしてファイルをドラッグ アンド ドロップできます。Spring Integration MessageBuilder を使用してそれを行うにはどうすればよいですか?? これまでのところ、これは添付ファイルを送信するために使用していますが、メールに添付されたファイルは本文ではなくヘッダーにあります。

Message<?> msg = MessageBuilder.withPayload("")
.setHeader(MailHeaders.SUBJECT, subject )
.setHeader(MailHeaders.ATTACHMENT_FILENAME, args[0].toString())
.build();

誰かが私にコード例を教えてくれたら、とても助かります! 前もって感謝します

4

1 に答える 1

3

コードは、メッセージ自体の重要な部分である、payload

  1. アウトバウンドメッセージアダプタをJavaMailSender(おそらくすでに持っているように)配線します
  2. のように、配線したものとMimeMessageを使用してレギュラーを作成しますorg.springframework.mail.javamail.JavaMailSenderorg.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);
     }
    

実装の詳細はわかりませんが、メールを送信するエンドポイントは終了エンドポイントである必要があります。つまり、メールはそのエンドポイントから直接送信できるため、別のチャネルに送信する必要はありません。

ただし、それでもメッセージを別のチャネルにフラッシュする必要がある場合は、そこにあるコードを書き直して読み取る必要があります。

     Message<MimeMessage> msg = MessageBuilder.withPayload(message)
          .setHeader(MailHeaders.SUBJECT, subject )
          .setHeader(MailHeaders.ATTACHMENT_FILENAME, args[0].toString())
          .build();
于 2012-10-13T04:58:51.237 に答える