java项目发送邮件,附带一些异常
来源:互联网 发布:php完全自学手册出版地 编辑:程序博客网 时间:2024/06/03 08:34
刚结束一个web项目,需要发送邮件,捣鼓了下,总结下自己的一点小经验,用着没什么问题,有不对的地方欢迎指教
我用的是qq邮箱,当然163,搜狐,新浪邮箱都是可以的,这里就以qq邮箱为例
首先获得qq邮箱16位的授权码,弄过的请跳过,先设置独立密码,和qq密码不一样,之后在邮箱首页点设置,再之后账号,往下翻
开启服务后会让你发短信得到授权码,发过后就得到一个16位的授权码,这个授权码有效时间是有限制的,过期了再次获得就好,也是一种安全保证
我用的是javax.mail包提供的邮件发送和接收功能
先引入javax.mail包,如果是maven项目则这样配置:
<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version></dependency>
然后上代码:
import java.io.UnsupportedEncodingException;import java.util.Properties;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;public class Email { public static void sendMail(String from,String toMail,String mailTitle,String mailContent ) throws MessagingException, UnsupportedEncodingException{ String fromEmail = "fromEmail"; //fromEmail是发件人的邮箱 String password = "password"; //password是邮箱授权码 Properties props = new Properties();//加载一个配置文件 //存储发送邮件服务器的信息,qq为例,如果是163则是smtp.163.com props.put("mail.smtp.host", "smtp.qq.com"); //使用smtp简单邮件传输协议 props.put("mail.transport.protocol","smtp"); props.put("mail.smtp.auth", "true");//是否需要身份验证 props.put("mail.smtp.ssl.enable", "true");//QQ邮箱的SSL加密 Session session = Session.getInstance(props); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //由邮件会话创建一个扩展信息对象 MimeMessage msg = new MimeMessage(session); //自定义昵称 String nick = MimeUtility.encodeText(from);//防止乱码 msg.setFrom(new InternetAddress(nick+"<"+fromEmail+">")); msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));//设置收件人,并设置其接受类型为to msg.setSubject(mailTitle);//设置标题 //设置为html格式,可以发送多种样式 msg.setContent(mailContent,"text/html;charset=UTF-8"); //msg.setSentDate(new Date()); //设置发信时间 msg.saveChanges(); //存储邮件信息 //使用smtp协议获取session环境的Transprot对象来发送邮件 javamial使用 //Transport对象来管理发送邮件服务 Transport tran = session.getTransport("smtp"); tran.connect(props.getProperty("mail.smtp.host"),fromEmail, password);//链接邮箱服务器,发送邮件的邮箱,以及授权码 //发送邮件,getAllRecipients()是所有已设好的收件人地址 tran.sendMessage(msg, msg.getAllRecipients()); tran.close(); } public static void main(String[] args) throws MessagingException, UnsupportedEncodingException { //"自定义昵称",可以自己定义想要使用的发送昵称 //toEMail,是接收方的email //title,是邮件的标题 //再下一个参数是邮件的内容,支持html sendMail("自定义昵称","toEmail", "title", "<span style='color:red;'>下雨了_简</span>的博客,欢迎交流"); }}
效果如图:
每一行代码都加了注释,我觉得很容易上手,再介绍一些异常:
java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
这是因为你导入的包只有api,没有包含sun的实现,重新导入javax.mail包即可530 Error: A secure connection is requiered(such as ssl)错误
原因是你没有设置qq的加密方式,加上这句就OK了
props.put(“mail.smtp.ssl.enable”, “true”);//QQ邮箱的SSL加密501 mail from address must be same as authorization user
这是因为你的fromEmail(发件人)和tran.connect(邮件发送对象)使用的邮箱不一致,解决办法:保持一致535 Error:ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
连接邮件对象使用的不是16位的授权码,得到授权码赋值
以上就是我学习发发邮件的过程,有什么问题欢迎留言指教
- java项目发送邮件,附带一些异常
- java 发送邮件异常
- Java写发送邮件服务碰到的一些异常
- Android发送邮件附带文件
- php发送邮件附带附件
- java发送简单邮件,以及发送邮件异常总结
- spring mail 邮件发送 附带 昵称
- Jenkins发送Email邮件附带reportNG报告
- jsp,java项目邮箱注册发送邮件
- maven项目使用java web 发送邮件
- JAVA项目四:邮件发送客户端
- 邮件发送异常
- IOS 异常邮件发送
- php 发送邮件教程 发送邮件附带附件 利用PHPMailer发送邮件教程
- javaMail SMTPSendFailedException: java邮件发送常见的异常类型
- 【项目实战】---邮件发送
- 邮件发送项目
- java关于发送邮件的一些常见问题分享
- 读书笔记_unity4.x第十二章_3D数学基础
- MapStruct处理Java实体的高级进阶使用
- Hrbust 2065 萌萌哒十五酱的苹果~【树链剖分+线段树】
- 基于CAS的单点登录SSO[2]: 改造cas-overlays-template支持MySQL数据库
- 读书笔记_unity4.x第十二章_渲染管线
- java项目发送邮件,附带一些异常
- hadoop分布集群搭建
- ServletContextListener接口
- python中double转化成float32
- RabbitMQ的几种典型使用场景
- CSS实现单行、多行文本溢出时显示省略号
- 洛谷P2723 丑数 Humble Numbers
- Ignite缓存持久化例子
- <数据结构与算法>单向循环链表基本框架(C语言描述)