Java 如何使用spring integration mail和DSL配置在邮件中添加附件
我是Spring integration的新手,尝试使用Spring integration邮件依赖项和DSL配置发送带有附件(excel工作表)的电子邮件。 我的问题是我不知道如何在Java 如何使用spring integration mail和DSL配置在邮件中添加附件,java,spring-integration-dsl,Java,Spring Integration Dsl,我是Spring integration的新手,尝试使用Spring integration邮件依赖项和DSL配置发送带有附件(excel工作表)的电子邮件。 我的问题是我不知道如何在Mail.outboundadapterIntegrationFlow中添加附件。是否有人有附件样本请张贴或分享一些样本代码?我已经阅读了spring文档,无法理解其中的附件概念。下面是我的代码 SampleClass.java @EnableAutoConfiguration @SpringBootApplic
Mail.outboundadapter
IntegrationFlow
中添加附件。是否有人有附件样本请张贴或分享一些样本代码?我已经阅读了spring文档,无法理解其中的附件概念。下面是我的代码
SampleClass.java
@EnableAutoConfiguration
@SpringBootApplication(scanBasePackages = { "c.v.flan"})
@IntegrationComponentScan
public class SampleClass {
public static void main(String[] args) {
new SpringApplicationBuilder(SampleClass.class)
.web(WebApplicationType.SERVLET)
.run(args);
}
@Bean
@Qualifier("get_send_channel")
MessageChannel getSendChannel() {
return MessageChannels.direct().get();
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
JavaMailSender m = new JavaMailSender() {
@Override
public void send(SimpleMailMessage[] arg0) throws MailException {
// TODO Auto-generated method stub
}
@Override
public void send(SimpleMailMessage arg0) throws MailException {
// TODO Auto-generated method stub
}
@Override
public void send(MimeMessagePreparator[] arg0) throws MailException {
// TODO Auto-generated method stub
}
@Override
public void send(MimeMessagePreparator arg0) throws MailException {
// TODO Auto-generated method stub
}
@Override
public void send(MimeMessage[] arg0) throws MailException {
// TODO Auto-generated method stub
}
@Override
public void send(MimeMessage arg0) throws MailException {
// TODO Auto-generated method stub
}
@Override
public MimeMessage createMimeMessage(InputStream arg0) throws MailException {
// TODO Auto-generated method stub
return null;
}
@Override
public MimeMessage createMimeMessage() {
// TODO Auto-generated method stub
return null;
}
};
MimeMessage mimeMessage = m.createMimeMessage();
MailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo("da.a");
mailMessage.setFrom("d.cfa");
mailMessage.setText("test");
mailMessage.setSubject("tedt syb");
System.out.println("inside the command liner ");
return args -> {
Message<?> message = MessageBuilder.withPayload(mailMessage).build();
System.out.println("Message [ayload =>"+ message.getPayload());
getSendChannel().send(message);
// System.out.println("we are getting out in demosi "+getReceiveChannel().receive().getPayload());
};
}
@Bean
public IntegrationFlow sendMailFlowl() {
return IntegrationFlows.from(getSendChannel())
.enrichHeaders(Mail.headers().
subjectFunction(m -> "Sub test").from("sue@hm.com")
.toFunction(m -> new String[] { "1@gm"})
// Dont know how to add function and point to an excel sheet
// .attachmentFilenameFunction(attachmentFilename)
)
.handle(Mail.outboundAdapter("c.v.com").port(245)
.credentials("ccc@gm", "Twenty21").protocol("smtp"),
e -> e.id("endCHannel"))
.get();
}
}`
@EnableAutoConfiguration
@SpringBootApplication(scanBasePackages={“c.v.flan”})
@集成组件扫描
公共类样本类{
公共静态void main(字符串[]args){
新的SpringApplicationBuilder(SampleClass.class)
.web(WebApplicationType.SERVLET)
.run(args);
}
@豆子
@限定符(“获取\发送\通道”)
MessageChannel getSendChannel(){
返回MessageChannels.direct().get();
}
@豆子
公共命令行运行程序命令行运行程序(ApplicationContext ctx){
JavaMailSender m=新的JavaMailSender(){
@凌驾
公共无效发送(SimpleEmailMessage[]arg0)引发MailException{
//TODO自动生成的方法存根
}
@凌驾
公共无效发送(SimpleEmailMessage arg0)引发MailException{
//TODO自动生成的方法存根
}
@凌驾
public void send(mimessagepreparator[]arg0)引发MailException{
//TODO自动生成的方法存根
}
@凌驾
public void send(mimessagepreparator arg0)引发MailException{
//TODO自动生成的方法存根
}
@凌驾
public void send(mimessage[]arg0)引发MailException{
//TODO自动生成的方法存根
}
@凌驾
public void send(mimessage arg0)引发MailException{
//TODO自动生成的方法存根
}
@凌驾
公共MimeMessage createMimeMessage(InputStream arg0)引发MailException{
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共mimessage createmimessage(){
//TODO自动生成的方法存根
返回null;
}
};
MimeMessage MimeMessage=m.createMimeMessage();
MailMessage MailMessage=新建SimpleEmailMessage();
mailMessage.setTo(“da.a”);
mailMessage.setFrom(“d.cfa”);
mailMessage.setText(“测试”);
mailMessage.setSubject(“tedt syb”);
System.out.println(“在命令行内”);
返回参数->{
Message Message=MessageBuilder.withPayload(mailMessage.build();
System.out.println(“Message[ayload=>”+Message.getPayload());
getSendChannel().send(消息);
//println(“我们正在演示”+getReceiveChannel().receive().getPayload());
};
}
@豆子
公共集成流sendMailFlowl(){
从(getSendChannel())返回IntegrationFlows.from
.enrichHeaders(Mail.headers()。
主题功能(m->“子测试”)。来自sue@hm.com")
.toFunction(m->新字符串[]{”1@gm"})
//不知道如何添加函数并指向excel工作表
//.attachmentFilename函数(attachmentFilename)
)
.handle(Mail.outboundAdapter(“c.v.com”).port(245)
.证书(“ccc@gm“,“Twenty21”)。协议(“smtp”),
e->e.id(“endCHannel”))
.get();
}
}`
参见文档:
MailSendingMessageHandler
具有各种映射策略,使用Spring的MailMessage
抽象。如果收到的消息的有效负载已经是MailMessage
实例,则直接发送。因此,我们通常建议您在该消费者之前为非平凡的邮件设置一个转换器sage
构造要求。但是,Spring集成支持一些简单的消息映射策略。例如,如果消息负载是字节数组,则映射到附件
关于这件事的密码是这样的:
MimeMessage mimeMessage = ((JavaMailSender) this.mailSender).createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, multipartMode);
helper.addAttachment(attachmentFileName, new ByteArrayResource(message.getPayload()));
return new MimeMailMessage(helper);
}
catch (MessagingException e) {
throw new MessageMappingException(message, "failed to create MimeMessage", e);
}
因此,您需要将该mailssender
作为一个独立的bean。将它与代码一起注入到转换器中,以构建这样一个MimeMailMessage
以及Mail.outboundAdapter()
。请参阅JavaMailSenderImpl
如何做到这一点
有关更多信息,请参见本文档: