Spring带附件邮件发送示例

xiaoxiao2021-02-28  94

本人刚开始写博客,如果朋友参考示例没有解决掉问题,麻烦给我留言,或提出建议,以后改善,谢谢朋友的赏光! 以下是代码: MailSender类:

package com.hr.mail; import javax.mail.internet.MimeMessage; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; public class MailSender { private JavaMailSender mailSender; private String fromSource; public void send(SimpleMailMessage message){ mailSender.send(message); } public void send(MimeMessage message){ mailSender.send(message); } public JavaMailSender getMailSender() { return mailSender; } public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public String getFromSource() { return fromSource; } public void setFromSource(String fromSource) { this.fromSource = fromSource; } }

spring-mail.xml文件:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd" > <context:property-placeholder location="classpath:mail.properties" ignore-unresolvable="true"/> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="${mail.host}"></property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">${mail.smtp.auth}</prop><!-- SMTP服务器是否需要用户认证,默认为false --> <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop><!-- IO连接超时时间,单位为毫秒,默认为永不超时 --> <prop key="mail.smtp.socketFactory.fallback">${mail.smtp.socketFactory.fallback}</prop><!-- 默认为true,设置为true时,当使用指定的socket类创建socket失败后,将使用java.net.Socket创建socket --> <!-- <prop key="mail.smtp.starttls.enable">true</prop> --><!-- 使用的邮件服务是否支持STARTTLS加密 --> </props> </property> <property name="username" value="${mail.username}"></property> <property name="password" value="${mail.password}"></property> <property name="port" value="${mail.port}"></property> </bean> <bean id="mailSenders" class="com.hr.mail.MailSender"> <property name="mailSender" ref="mailSender"></property> <property name="fromSource" value="${mail.form}"></property> </bean> </beans>

mail.properties文件:

mail.host=发送邮箱的服务器地址 mail.username=发送邮箱的用户名 mail.password=发送邮箱的密码 #邮箱端口 mail.port=25 mail.form=发送邮箱地址 #SMTP服务器是否需要用户认证,默认为false mail.smtp.auth=true #IO连接超时时间,单位为毫秒,默认为永不超时 mail.smtp.timeout=25000 #默认为true,设置为true时,当使用指定的socket类创建socket失败后,将使用java.net.Socket创建socket mail.smtp.socketFactory.fallback=false

sendMail.java:

public class QuartzJob{ @Autowired private MailSender mailSenders; private void sendUserSalaryMail(String title,String content, String filePath,String emailAddress,String sendAddress){ try { File file = new File(filePath); //附件本地路径 JavaMailSender sender = mailSenders.getMailSender(); MimeMessage message = sender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(sendAddress); //发送邮箱地址 helper.setTo(emailAddress); //目标邮箱地址 helper.setSubject(title); //邮箱主题 helper.setText(content); //邮箱内容 helper.addAttachment(file.getName(), file); //添加附件 mailSenders.send(message); } catch (MessagingException e) { logger.error(e); } } }

这样大功就搞成了。 效果图:

转载请注明原文地址: https://www.6miu.com/read-78005.html

最新回复(0)