ssm实现发送邮箱功能

您所在的位置:网站首页 发短信配置邮件客户端怎么发 ssm实现发送邮箱功能

ssm实现发送邮箱功能

2024-07-10 00:10| 来源: 网络整理| 查看: 265

参考:ssm整合JavaMail发送邮件_ssm整合mimemessage_ds_surk的博客-CSDN博客

我在这位前辈写的博客的基础上进行讲解完善,避免踩坑。

我的jdk版本:1.8.0_333

 1、引入依赖

相信很多朋友都卡在这里: 1、没有JavaMailSenderImpl类 2、实例化MimeMessage类爆红 缺少必要的依赖等等,用下面我实践出来的就OK了

代码语言:javascript复制 org.springframework spring-context-support 5.3.3 com.sun.mail javax.mail 1.6.2 2、编写配置文件

配置文件不要写注释,这里是让你好看它们的作用

mail.properties:

代码语言:javascript复制mail.smtp.host=smtp.163.com #服务器主机名 mail.smtp.username=***********@163.com #用于发件的邮箱 mail.smtp.password=****************** #客户端授权码 mail.smtp.defaultEncoding=utf-8 #编码字符 mail.smtp.auth=true #是否进行用户名密码校验 mail.smtp.timeout=20000 #设置超时时间

获取客户端授权码教程在下面

applicationContext.xml:

代码语言:javascript复制 ${mail.smtp.auth} ${mail.smtp.timeout}  3、测试代码语言:javascript复制@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") @PropertySource("classpath:mail.properties") public class MailTest { @Autowired private JavaMailSender javaMailSender; //在spring中配置的邮件发送的bean @Value("${mail.smtp.username}") //通过注解获取配置文件属性值 String from; //发件人邮箱 String to = "***********@qq.com"; //收件人邮箱,这里可以是QQ邮箱等其他邮箱 String subject = "由JavaMail发送"; //邮件主题 String text = "你好,这是一封来自SSM框架整合JavaMail的邮件"; //邮件正文 // File file = new File("C:/Users/gong'chao/Desktop/3.jpeg"); //发送一个文件 @Test public void testSend() { MimeMessage message = javaMailSender.createMimeMessage(); //创建一个使用对象方法的新实例。MIME格式的电子邮件 MimeMessageHelper messageHelper; //处理MimeMessage的辅助类 try { messageHelper = new MimeMessageHelper(message, true); //第二个参数表示文本内容支持HTML格式 messageHelper.setFrom(from); //设置电子邮件的发件人地址 messageHelper.setTo(to); //设置电子邮件的收件人地址,可以逗号隔开发送多个 messageHelper.setSubject(subject);//设置电子邮件的主题 messageHelper.setText(text,true); //true代表支持html格式 // messageHelper.addAttachment(file.getName(), file); //以附件形式发送一个文件 javaMailSender.send(message);//使用对象的方法发送电子邮件 System.out.println("success!"); }catch (Exception e) { e.printStackTrace(); } } } 获取客户端授权码

报错 javax.mail.AuthenticationFailedException: 535 Error: authentication failed 等 就是邮箱的客户端授权码错误或授权码没有开启

 这里以网易邮箱为例

其他邮箱都差不多的操作。另外,换其他邮箱记得更改服务器主机名,比如:QQ邮箱是smtp.465.com

这里在开启后会让你发送短信,发送短信后就会出现授权码,复制粘贴到mail.properties中。

补充

如果想要将图片传输过去,很多朋友可能尝试各种方法都没有成功。我这里也是踩坑,尝遍了网上各种方式也不行。下面看看我是如何解决的: 

代码语言:javascript复制@Controller public class VerificationCodeController { @Autowired private JavaMailSender javaMailSender; @RequestMapping("verCon") @ResponseBody public String verCon(String email,HttpServletRequest request){ //指定图片路径 //不要使用request.getContextPath()+""拼接方式,找不到图片资源 ServletContext servletContext = request.getServletContext();//获取整个web应用上下文 //获取图片路径,一定要确保文件存在 String imagePath = servletContext.getRealPath("/status/images/Title.png"); //设置Cid标识 String imageCid = "image"; //通过cid引用嵌入的图片 String text ="\"**\""; try { messageHelper = new MimeMessageHelper(message, true); messageHelper.setFrom("******@163.com"); messageHelper.setTo(email); messageHelper.setSubject("**"); messageHelper.setText(text,true); //将图片资源嵌入到邮件中,并设置cid messageHelper.addInline(imageCid, new File(imagePath)); javaMailSender.send(message); return "success"; }catch (Exception e) { e.printStackTrace(); return "false"; } } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3