1.pom.xml配置依赖
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.4</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency>
2.还得有一个邮件的服务类:
import org.springframework.core.io.FileSystemResource; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.MimeMessageHelper; import java.io.File; import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.mail.javamail.JavaMailSender; /** * ----------------------------------------- * 文件: Email.java * 描述: 发送邮箱得服务类 * ----------------------------------------- */
public class Email { private static final Logger logger = LoggerFactory.getLogger(Email.class); private MailSender mailSender; private SimpleMailMessage simpleMailMessage; @Resource private JavaMailSender myMails; /** * 方法名: sendMail * 参数名:@param subject 邮件主题 * 参数名:@param content 邮件主题内容 * 参数名:@param to 收件人Email地址 * 描述语: 发送邮件 */ public void sendMail(String subject, String content, String to) { simpleMailMessage.setSubject(subject); //设置邮件主题 simpleMailMessage.setTo(to); //设定收件人 simpleMailMessage.setText(content); //设置邮件主题内容 mailSender.send(simpleMailMessage); //发送邮件 } //Spring 依赖注入 public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) { this.simpleMailMessage = simpleMailMessage; } //Spring 依赖注入 public void setMailSender(MailSender mailSender) { this.mailSender = mailSender; } /** * * @Description:普通文本发邮件形式 * @param subject 主题 * @param content 正文 * @param toMail 收件人邮箱 * void * @exception: */ public void sendSimpleMail(String subject,String content,String toMail) { simpleMailMessage.setSubject(subject); simpleMailMessage.setText(content); simpleMailMessage.setTo(toMail); mailSender.send(simpleMailMessage); logger.info("邮件发送成功.."); } /** * * @Description:html发邮件形式 * @param subject 主题 * @param content 正文 * @param toMail 收件人邮箱 * void * @exception: */ public void sendHtmlMail(String subject,String content,String toMail) { MimeMessage mailMessage = myMails.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage); try { messageHelper.setTo(toMail); messageHelper.setSubject(subject); messageHelper.setText("<html><head></head><body><h1>"+content+"</h1></body></html>",true); myMails.send(mailMessage); } catch (MessagingException e) { e.printStackTrace(); } } /** * * @Description: 带图片发邮件形式 * @param subject 主题 * @param content 正文 * @param toMail 收件人邮箱 * @param picturePath 图片路径 * void * @exception: */ public void sendPictureMail(String subject,String content,String toMail,String picturePath){ MimeMessage mailMessage = myMails.createMimeMessage(); MimeMessageHelper messageHelper; try { messageHelper = new MimeMessageHelper(mailMessage,true); messageHelper.setTo(toMail); messageHelper.setSubject(subject); //messageHelper.setText("<html><head></head><body><h1>" + content +"</h1><img src=/"+cid:aaa + /"/></body></html>",true); FileSystemResource img = new FileSystemResource(new File(picturePath)); messageHelper.addInline("aaa",img); //发送邮件 myMails.send(mailMessage); } catch (MessagingException e) { e.printStackTrace(); } } /** * * @Description:带附件发邮件形式 * @param subject 标题 * @param content 正文 * @param toMail 收件人邮箱 * @param accessoryPath 附件路径 * @param accessoryName 附件名 * void * @exception: */ public void sendMailTakeAccessory(String subject,String content,String toMail,String accessoryPath,String accessoryName){ MimeMessage mailMessage = myMails.createMimeMessage(); MimeMessageHelper messageHelper; try { messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); messageHelper.setTo(toMail); messageHelper.setSubject(subject); messageHelper.setText("<html><head></head><body><h1>"+content+"</h1></body></html>",true); FileSystemResource file = new FileSystemResource(new File(accessoryPath)); messageHelper.addAttachment(accessoryName,file); myMails.send(mailMessage); } catch (MessagingException e) { e.printStackTrace(); } }
3.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 第一种方式 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <!-- 服务器 --> <property name="host" value="smtp.163.com" /> <!-- 端口号 --> <property name="port" value="25" /> <!-- 用户名 --> <property name="username" value="yourMailName@163.com" /><!-- 密码 -->
<property name="password" value="yourPassword" /><!-- SMTP服务器验证 --> <property name="javaMailProperties"> <props> <!-- 验证身份 --> <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> <!-- 目前我用过的EMAIL账号都是网易的,下面列出网易的SMTP服务器名和端口号: 网易邮箱 SMTP服务器 SMTP端口 POP3服务器 POP3端口 @126.com smtp.126.com 25 pop3.126.com 110 @163.com smtp.163.com 25 pop3.163.com 110 @yeah.net smtp.yeah.net 25 pop3.yeah.net 110 --> <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage"> <!-- 发件人email --> <property name="from" value="yourMailName@163.com" />
</bean> <bean id="simpleMail" class="com.ssm.pojo.Email"> <property name="mailSender" ref="mailSender" /> <property name="simpleMailMessage" ref="simpleMailMessage" /> </bean>
<!-- 第二种方式 -->
<bean id="myMails" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="defaultEncoding" value="UTF-8" /> <!-- 服务器 --> <property name="host" value="smtp.163.com" /> <!-- 端口号 --> <!--<property name="port" value="25" />--> <!-- 用户名 --> <property name="username" value="yourMailName@163.com" /><!-- 密码 --> <property name="password" value="yourPassword" /> <property name="javaMailProperties"> <props> <!-- 设置认证开关 --> <prop key="mail.smtp.auth">true</prop> <!-- 启动调试开关 --> <prop key="mail.debug">true</prop> <!-- 设置发送延时 --> <prop key="mail.smtp.timeout">2500</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory </prop> <prop key="mail.smtp.port">465</prop> <prop key="mail.smtp.socketFactory.port">465</prop> </props> </property> </bean></beans>
4.一个简单的入口类
import com.ssm.pojo.Email; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyMail { public static void main(String[] args) { MyMail.testSendMail(); } public static void testSendMail() { ApplicationContext context = new ClassPathXmlApplicationContext("spring_mail.xml"); Email mail = (Email)context.getBean("simpleMail"); mail.sendMail("hello", "hello world,程序如此简单", "yourMailName@163.com"); //mail.sendMail("标题", "内容", "收件人邮箱"); mail.sendSimpleMail("hello", "hello world,程序如此简单", "yourMailName@163.com"); } }5.或者一个简单Controller
@Resource private Email mail;
@RequestMapping("/sendMail") public void sendMails(){ mail.sendMail("您好", "hello world", "yourMailName@qq.com"); }