利用javaMail发送邮件
2016-07-08 19:39
381 查看
经过网上查找资料,从前辈们提供的资料中进行不断的总结改进,本人完成了以下程序。以下的程序只能发送一些简单的文字到邮箱,并没有实践过发送附件,图片,文件等复杂情况。
一、几个重要的对象
1)Session
2)Message
3)Transport
二、第三方程序用qq账号发送邮件
1,什么是客户端?
在腾讯看来,所有不是通过腾讯页面或客户端登陆的都属于客户端
在上面所谓的客户端登陆qq时,原来的账号密码已经不管用了,需要进入腾讯进行设置,获取授权码,用授权码进行登陆。
2,怎么获取授权码?
进入qq邮箱——>设置——>账户——>开启POP3/SMTP服务——>短信验证——>获取授权码
3,怎样在程序中利用qq邮箱,向其他的邮箱发送邮件?
1)在程序中导入需要的jar包(2个):
2)写程序
4,程序中需要注意的地方?
1)Mail实体类中含有的字段简介
fromMail:发信人邮箱号
user:现在要求fromMail和user要保持一致
password:为从腾讯获得的授权码
toMail:收件人的邮箱
mailTiele:邮件主题
mailContent:邮件内容
smtpType:邮件发送协议
port:邮箱服务器端口
2)qq邮箱需要使用SSL,端口号为465或587;
3)建立连接connect时要指出使用的协议
三、第三方程序利用常用邮箱发送邮件总结
1,客户端登陆邮箱时,例如登陆qq邮箱,网易邮箱等,登陆时用的密码都不是原来的密码,而是利用官方生成的授权码进行登陆的
2,不同的邮箱使用的邮件发送协议不同:
qq:stmp.qq.com;端口号:465或587;需要使用SSL;qq邮箱授权码:***
163:stmp.163.com;端口号:25;不需要使用SSL;163邮箱授权码:**
一、几个重要的对象
1)Session
2)Message
3)Transport
二、第三方程序用qq账号发送邮件
1,什么是客户端?
在腾讯看来,所有不是通过腾讯页面或客户端登陆的都属于客户端
在上面所谓的客户端登陆qq时,原来的账号密码已经不管用了,需要进入腾讯进行设置,获取授权码,用授权码进行登陆。
2,怎么获取授权码?
进入qq邮箱——>设置——>账户——>开启POP3/SMTP服务——>短信验证——>获取授权码
3,怎样在程序中利用qq邮箱,向其他的邮箱发送邮件?
1)在程序中导入需要的jar包(2个):
2)写程序
public class MailSender { public static void sendMail(Mail mail) throws Exception { Properties props = new Properties(); // 可以加载一个配置文件 // 使用smtp:简单邮件传输协议 props.setProperty("mail.transport.protocol", "smtp");//发送邮件协议 props.setProperty("mail.smtp.auth", "true");//需要验证 // 设置邮箱服务器的端口号 Integer port=mail.getPort(); props.setProperty("mail.smtp.port",port.toString()); if ("smtp.qq.com".equals(mail.getStmpType())) { // qq邮箱需要的的SSL设置 props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.setProperty("mail.smtp.port", port.toString()); props.setProperty("mail.smtp.socketFactory.port", port.toString()); } // 1,根据属性新建一个邮件会话 Session session = Session.getInstance(props); session.setDebug(true); //有他会打印一些调试信息。 // 2,由邮件会话新建一个消息对象 MimeMessage message = new MimeMessage(session); // 3,设置发件人的地址 message.setFrom(new InternetAddress(mail.getFromMail())); // 4,设置收件人,并设置其接收类型为TO message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail.getToMail())); // 5,设置邮件的内容 // 设置主题 message.setSubject(mail.getSubject()); // 设置信件内容 // message.setText(mailContent); //发送 纯文本 邮件 todo message.setContent(mail.getContent(), "text/html;charset=utf-8"); // 发送HTML邮件,内容样式比较丰富 // 设置发信时间 message.setSentDate(new Date()); // 6,存储邮件信息 message.saveChanges(); // 7,发送邮件 Transport transport = session.getTransport(); // 形如:transport.connect("smtp.qq.com", 465, mail.getUsername(), mail.getPassword());//连接到QQ邮箱服务器 transport.connect(mail.getStmpType(), mail.getPort(), mail.getUsername(), mail.getPassword());//连接到邮箱服务器 // transport.connect(user, password); transport.sendMessage(message, message.getAllRecipients());// 发送邮件,其中第二个参数是所有已设好的收件人地址 transport.close(); } }
4,程序中需要注意的地方?
1)Mail实体类中含有的字段简介
fromMail:发信人邮箱号
user:现在要求fromMail和user要保持一致
password:为从腾讯获得的授权码
toMail:收件人的邮箱
mailTiele:邮件主题
mailContent:邮件内容
smtpType:邮件发送协议
port:邮箱服务器端口
2)qq邮箱需要使用SSL,端口号为465或587;
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.port", "465");
3)建立连接connect时要指出使用的协议
transport.connect("smtp.qq.com", 465, user, password);//连接到QQ邮箱服务器
三、第三方程序利用常用邮箱发送邮件总结
1,客户端登陆邮箱时,例如登陆qq邮箱,网易邮箱等,登陆时用的密码都不是原来的密码,而是利用官方生成的授权码进行登陆的
2,不同的邮箱使用的邮件发送协议不同:
qq:stmp.qq.com;端口号:465或587;需要使用SSL;qq邮箱授权码:***
163:stmp.163.com;端口号:25;不需要使用SSL;163邮箱授权码:**
相关文章推荐
- java编程思想读书笔记
- 搭建Spring mvc环境
- 关于eclipse中配置svn插件,亲测有效。
- target,currentTarget和this三者的区别
- Jpanel或Jframe添加键盘监听无效
- Struts2的Action向JSP传输List集合并且将数据显示在页面上
- Java动态代理
- Java 集合 散列表hash table
- Java8系列之重新认识HashMap
- 个人学习-java-jdbc学习
- java动态加载
- spring常用工具类
- 关于如何处理MyEclipse中struts2与Hiber 3中antlr-2.7.2.jar与antlr-2.7.6包冲突的问题
- struts2请求过程源码分析
- java 中的序列化和反序列化
- 【Java笔记】Java——远程监控、反射、代理、内省机制
- Java开发基础
- java值传递和引用传递
- JAVA第一课——qq登录界面的开发
- [置顶] 用递归算法得到Java的树形结构