コードは、メッセージ自体の重要な部分である、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);
}
実装の詳細はわかりませんが、メールを送信するエンドポイントは終了エンドポイントである必要があります。つまり、メールはそのエンドポイントから直接送信できるため、別のチャネルに送信する必要はありません。
ただし、それでもメッセージを別のチャネルにフラッシュする必要がある場合は、そこにあるコードを書き直して読み取る必要があります。
Message<MimeMessage> msg = MessageBuilder.withPayload(message)
.setHeader(MailHeaders.SUBJECT, subject )
.setHeader(MailHeaders.ATTACHMENT_FILENAME, args[0].toString())
.build();