Spring发送邮件_javax.mail.AuthenticationFailedException异常已解决
在Spring项目中须要增加监控功能。监控过程中发现异常时。须要邮件报警。最初选择用javamail发送,代码量比較大(相对于spring发送)。终于选择Spring邮件发送~
以下贴一下实现的代码以及注意事项;
代码结构非常easy一个java类和一个xml文件,用到三个jar包,demo下载地址http://download.csdn.net/detail/jeofey/8892859
这里仅仅是简单的发送,假设须要发送附件或者HTML格式的邮件的话,代码在文章末尾
- package mail;
- import javax.mail.MessagingException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.FileSystemXmlApplicationContext;
- import org.springframework.mail.SimpleMailMessage;
- import org.springframework.mail.javamail.JavaMailSender;
- /**
- * @author Owner
- * springMail发送邮件
- * SendMail.java
- */
- public class SendMail {
- public ApplicationContext ctx = null;
- public SendMail() {
- ctx = new FileSystemXmlApplicationContext("src/mail/applicationContext-mail.xml");
- }
- /**
- * 主測试方法
- *
- * @throws MessagingException
- */
- public static void main(String[] args) {
- new SendMail().sendMail();
- }
- /**
- * 发送简单邮件
- */
- public void sendMail() {
- JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");// 获取JavaMailSender
- SimpleMailMessage mail = new SimpleMailMessage();
- try {
- mail.setTo("aaaa@qq.com");// 接受者
- mail.setFrom("bbbb@163.com");// 发送者
- mail.setSubject("s邮件主题");// 主题
- mail.setText("springMail 的简单发送測试");// 邮件内容
- sender.send(mail);
- System.out.println("发送完成");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
注意事项:在读取xml配置文件时,用的是FileSystemXmlApplicationContext实现类,在书写路径的时候不能仅仅写文件名称,虽然java文件和xml文件是在同一文件夹下。
假设收件人有多个时,mail.setTo("aaaa@qq.com")。mail.setTo("cccc@qq.com")....
- <?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:p="http://www.springframework.org/schema/p"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jee="http://www.springframework.org/schema/jee"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <bean id="mailSender"
- class="org.springframework.mail.javamail.JavaMailSenderImpl">
- <property name="host">
- <value>smtp.163.com</value>
- </property>
- <property name="javaMailProperties">
- <props>
- <prop key="mail.smtp.auth">true</prop>
- <prop key="mail.smtp.timeout">25000</prop>
- <prop key="mail.smtp.socketFactory.fallback">false</prop>
- <prop key="mail.smtp.starttls.enable">true</prop>
- <!-- 这里是配置ssl 主要是个,Gmail
- <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
- -->
- </props>
- </property>
- <property name="username">
- <value>bbbb@163.com</value> <!-- 邮箱的username。注意要写正确了 -->
- </property>
- <property name="password">
- <value>*****</value> <!-- 邮箱password -->
- </property>
- <property name="port">
- <value>25</value>
- </property>
- </bean>
- </beans>
注意问题:username须要书写正确,必须是发送邮件中设定好的username,假设没设置。默认是邮件地址。当初这里没写正确,验证时出现了异常;
- 七月 12, 2015 8:02:57 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
- 信息: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@16d835f: display name [org.springframework.context.support.FileSystemXmlApplicationContext@16d835f]; startup date [Sun Jul 12 20:02:57 CST 2015]; root of context hierarchy
- 七月 12, 2015 8:02:58 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
- 信息: Loading XML bean definitions from file [D:\liu\workspace\myspmain\src\mail\applicationContext-mail.xml]
- 七月 12, 2015 8:02:58 下午 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
- 信息: Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext@16d835f]: org.springframework.beans.factory.support.DefaultListableBeanFactory@13911fe
- 七月 12, 2015 8:02:58 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
- 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@13911fe: defining beans [mailSender]; root of factory hierarchy
- org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException
- at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:416)
- at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:308)
- at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:297)
- at mail.SendMail.sendMail(SendMail.java:41)
- at mail.SendMail.main(SendMail.java:28)
- Caused by: javax.mail.AuthenticationFailedException
- at javax.mail.Service.connect(Service.java:306)
- at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
- ... 4 more
查看发件箱的username
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border:none; max-width:100%">
发件结果:
发送html格式和发送附件的代码
- /**
- * 发送带有正文是html的邮件
- *
- * @throws MessagingException
- */
- public void sendHTML() throws MessagingException {
- JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");// 获取JavaMailSender
- // bean
- MimeMessage mm = sender.createMimeMessage();
- MimeMessageHelper helper = new MimeMessageHelper(mm, true, "utf-8");
- try {
- helper.setTo("aaaa@qq.com");// 接受者
- helper.setFrom("bbbb@163.com");// 发送者
- helper.setSubject("邮件主题");// 主题
- helper.setText("<html><head></head><body><h1>hello!!beckham</h1></body></html>",true);// 第二个參数代表发送的是正文是html
- sender.send(mm);
- System.out.println("发送完成");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 发送带有附件的邮件
- *
- * @throws MessagingException
- */
- public void sendFileMail() throws MessagingException {
- JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");// 获取JavaMailSender
- // bean
- MimeMessage mm = sender.createMimeMessage();
- MimeMessageHelper helper = new MimeMessageHelper(mm, true, "utf-8");
- try {
- helper.setTo("aaaa@qq.com");// 接受者
- helper.setFrom("bbbb@163.com");// 发送者
- helper.setSubject("邮件主题");// 主题
- helper.setText("邮件内容");// 邮件内容
- //多个附件文件
- ClassPathResource in = new ClassPathResource("附件.txt");
- ClassPathResource in2 = new ClassPathResource("struts.xml");
- //MimeUtility.encodeWord()解决附件的文件名称为中文问题
- helper.addAttachment(MimeUtility.encodeWord(in.getFilename()), in);
- helper.addAttachment(MimeUtility.encodeWord(in2.getFilename()), in2);
- sender.send(mm);
- System.out.println("发送完成");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
Spring发送邮件_javax.mail.AuthenticationFailedException异常已解决的更多相关文章
- sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”(已解决)
sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”(已解决) 出现此错误主要是因为.sql的脚本文件过大(一般都超过100M)造成内存无法 ...
- No bean named 'xxxxx' is defined异常,已解决,这个坑很难发现,你get了吗
出现No bean named 'xxxxx' is defined异常 没有定义名为xxx的bean 如果你的代码写的都对,根本问题只有一个地方出错了,那就是你的 basePackage=的包名路径 ...
- 使用mail架包发送邮件javax.mail.AuthenticationFailedException: failed to connect at javax.mail.Service.connec
这个错误是因为连接不上邮箱服务器导致的,可能有以下几个原因(以网易邮箱为例) 1.当使用第三方登录邮箱时需要有邮箱的授权码,且要开启POP3/SMTP/IMAP:服务 2.在代码中要调用网易邮箱的密码 ...
- javamail发送邮件及错误解决方法javax.mail.AuthenticationFailedException: failed to connect, no password specified?
javamail发送邮件及错误解决方法javax.mail.AuthenticationFailedException: failed to connect, no password specifie ...
- 关于使用JavaMail发送邮件抛出java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava异常的解决方法
我们在使用JavaMail时有可能会如下异常: Exception in thread "main" java.lang.NoSuchMethodError: com.sun.ma ...
- [Android]异常4-javax.mail.AuthenticationFailedException
javax.mail.AuthenticationFailedException 背景:JavaMail发送电子邮件 异常原因: 可能一>发件人帐号.密码有误 可能二>需要使用SSL安全认 ...
- java spring 等启动项目时的异常 或 程序异常的解决思路
今天搭建ssm项目的时候,因为pagehelper的一个jar包没有导入idea的web项目下的lib目录中,异常报错找不到pagehelper,这个问题在出异常的时候疯狂crash,让人心情十分不舒 ...
- No Spring WebApplicationInitializer types detected on classpath异常的解决
1.问题描述,当配置成 时,通过地址栏访问默认路径的index.jsp报404错误,如果手动在浏览器输入“http://localhost:8080/index.jsp”,则出现源码文件,然后观察ec ...
- Spring boot 前后台分离项目 怎么处理spring security 抛出的异常
最近在开发一个项目 前后台分离的 使用 spring boot + spring security + jwt 实现用户登录权限控制等操作.但是 在用户登录的时候,怎么处理spring securi ...
随机推荐
- 用CSS样式写选择框右侧小三角
直接上代码! <!DOCTYPE html><html lang="en"><head> <title>小三角</title& ...
- SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集
SAS进阶<深入解析SAS>之Base SAS基础.读取外部数据到SAS数据集 前言:在学习完<SAS编程与商业案例>后,虽然能够接手公司的基本工作,但是为了更深入的SAS学习 ...
- Java&Xml教程(五)使用SAX方式解析XML文件
Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...
- CSS——行业动态demo
1.padding的运用:子div继承父div的宽,子div的padding-left值是不会撑大的. 2.背景图片的运用:不平铺.定位 3.ul本身就是一个盒子,它的高度是li中的字体的默认高度撑起 ...
- JS实现随机颜色的3种方法与颜色格式的转化
JS实现随机颜色的3种方法与颜色格式的转化 随机颜色和颜色格式是我们在开发中经常要用到的一个小功能,网上相关的资料也很多,想着有必要总结一下自己的经验.所以这篇文章主要介绍了JS实现随机颜色的3种 ...
- Vue项目优化首屏加载速度
Vue项目部署上线后经常会发现首屏加载的速度特别慢:那么有那写能做的简单优化呢 一.路由的懒加载 路由懒加载也就是 把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件. 结合 ...
- CPU内部组成及原理
CPU,Central Processing Unit,翻译过来叫中央处理器.是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).电脑中所有操作都由C ...
- Idea 创建maven web项目(手工创建)
参考链接:https://www.cnblogs.com/justuntil/p/7511787.html 话不多说,直接上图: 1.创建maven项目 创建项目完成,项目结构如下: 2.项目部署配置 ...
- map集合遍历,放入id
背景,需要从电脑导入excel表格到网页上然后表格中公司需要对应数据库的id 通过key-value方法来对应id Office office = new Office();office.setG00 ...
- 2 Button
// <summary> /// 设置透明按钮样式 /// </summary> private void SetBtnStyle(Button btn) { btn.Flat ...