利用ssm框架创建mavenweb项目实现发送邮件功能

邮件发送功能是我们在开发中非常常见的一个需求,对于各种账号的注册绑定和账号激活都是非常好用的。因此今天我们来学习一下在spring中实现发送邮件的功能。

1.导入jar包。首先我们需要在我们spring项目中添加以下两个jar包(我是使用的maven所以直接配置依赖信息)
 

 
  1. <!--spring支持-->

  2. <dependency>

  3. <groupId>org.springframework</groupId>

  4. <artifactId>spring-context-support</artifactId>

  5. <version>5.0.0.RELEASE</version>

  6. </dependency>

  7. <!--邮件发送-->

  8. <dependency>

  9. <groupId>com.sun.mail</groupId>

  10. <artifactId>javax.mail</artifactId>

  11. <version>1.6.1</version>

  12. </dependency>

2.配置邮件服务器等信息。

先在邮箱中设置开启smtp和pop3服务然后拿到授权码:

mail.properties文件:

 
  1. #服务器主机名 smtp.xx.com

  2. mail.smtp.host=smtp.163.com

  3. [email protected]

  4. #密码/客户端授权码

  5. mail.smtp.password=XXXXXXXXX

  6. #编码字符

  7. mail.smtp.defaultEncoding=utf-8

  8. #是否进行用户名密码校验

  9. mail.smtp.auth=true

  10. #设置超时时间

  11. mail.smtp.timeout=20000


3.配置applicationContext-email.xml。在配置文件中导入properties文件的属性:

 
  1. <!--邮件配置-->

  2. <context:property-placeholder location="classpath:config/mail.properties" ignore-unresolvable="true"/>

其中ignore-unresolvable="true"属性是配置文件中存在多个property-placeholder时出现解析不了的占位符进行忽略掉,详细解释可以参考这位大神的博客:property-placeholder

然后注入一个邮件发送的bean接口:

 
  1. <!--配置邮件接口-->

  2. <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

  3. <property name="host" value="${mail.smtp.host}"/>

  4. <property name="username" value="${mail.smtp.username}"/>

  5. <property name="password" value="${mail.smtp.password}"/>

  6. <property name="defaultEncoding" value="${mail.smtp.defaultEncoding}"/>

  7. <property name="javaMailProperties">

  8. <props>

  9. <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>

  10. <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>

  11. </props>

  12. </property>

  13. </bean>

所有配置都完成了

4.编写一个测试类来测试一下:

 
  1. package com.ssm.controller;

  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;

  4. import org.springframework.core.io.FileSystemResource;

  5. import org.springframework.mail.SimpleMailMessage;

  6. import org.springframework.mail.javamail.JavaMailSender;

  7. import org.springframework.mail.javamail.MimeMessageHelper;

  8. import org.springframework.web.bind.annotation.RequestMapping;

  9. import org.springframework.web.bind.annotation.RestController;

  10.  
  11. import javax.mail.MessagingException;

  12. import javax.mail.internet.MimeMessage;

  13. import java.io.File;

  14. import java.io.IOException;

  15. import java.util.Properties;

  16.  
  17. /**

  18. * created by viking on 2018/07/17

  19. * 测试邮件发送controller

  20. */

  21. @RestController

  22. @RequestMapping("mail")

  23. public class SendMailController {

  24. @Autowired

  25. private JavaMailSender javaMailSender;//在spring中配置的邮件发送的bean

  26.  
  27. @RequestMapping("send")

  28. public Object sendMail03(){

  29. MimeMessage mMessage=javaMailSender.createMimeMessage();//创建邮件对象

  30. MimeMessageHelper mMessageHelper;

  31. Properties prop = new Properties();

  32. String from;

  33. try {

  34. //从配置文件中拿到发件人邮箱地址

  35. prop.load(this.getClass().getResourceAsStream("/config/mail.properties"));

  36. from = prop.get("mail.smtp.username")+"";

  37. mMessageHelper=new MimeMessageHelper(mMessage,true);

  38. mMessageHelper.setFrom(from);//发件人邮箱

  39. mMessageHelper.setTo("[email protected]");//收件人邮箱

  40. mMessageHelper.setSubject("Spring的邮件发送");//邮件的主题

  41. mMessageHelper.setText("<p>这是使用spring的邮件功能发送的一封邮件</p><br/>" +

  42. "<a href='https://blog.csdn.net/Mr__Viking'>打开我的博客主页</a><br/>" +

  43. "<img src='cid:fengye'>",true);//邮件的文本内容,true表示文本以html格式打开

  44. File file=new File("F:/img/枫叶.png");//在邮件中添加一张图片

  45. FileSystemResource resource=new FileSystemResource(file);

  46. mMessageHelper.addInline("fengye", resource);//这里指定一个id,在上面引用

  47. mMessageHelper.addAttachment("枫叶.png", resource);//在邮件中添加一个附件

  48. javaMailSender.send(mMessage);//发送邮件

  49. } catch (MessagingException e) {

  50. e.printStackTrace();

  51. } catch (IOException e) {

  52. e.printStackTrace();

  53. }

  54. return "发送成功";

  55. }

  56. }

5.测试结果。直接上图:

     访问接口运行程序

    查看邮箱的收到的邮件信息

收到的邮件和我们预期的一样,说明我们的功能完美的实现了

以上转载借鉴自别处并加以更改

猜你喜欢

转载自blog.csdn.net/qq_37706228/article/details/82289942