JavaMail简单实践
来源:互联网 发布:家庭理财记账软件 编辑:程序博客网 时间:2024/05/22 03:17
JavaMail是一种处理电子邮件的编程接口,它是Sun发布的用来处理email的API,通俗地讲,
就是帮助我们用java代码实现邮件的发送和接收。
javamail在web开发中的应用
1.用户注册后,网站发送一封激活邮件验证
2.用户过生日,系统发送生日祝福邮件
3.将最新活动和优惠以邮件的形式告知会员
...
邮件开发中的基本术语
1.电子邮箱
电子邮箱(E-mail address)是用户在某个邮箱服务器上申请的一个帐号,用户使用邮箱服务器分配
的帐号和内存空间,进行邮件的发送和保存。
2.邮箱服务器
就像安装了tomcat的电脑能充当web服务器一样,安装了邮件服务器软件的电脑就称为
邮箱服务器,当然,用来作为服务器的主机,其硬件配置比普通电脑要好很多。网络上
有很多提供邮件服务的厂商,他们有拥有专门的邮箱服务器,比如新浪、网易、搜狐等。
这些服务器类似于现实生活中的邮局,负责接收用户投递过来的邮件,并把邮件投递到
邮件接收者的电子邮箱中。
3.邮件收发协议
SMTP(simple mail transfer protocol),SMTP协议定义了通讯规则,它属于TCP/IP协议
簇,帮助每台计算机在发送或中转信件时找到下一个目的地。通常把处理用户SMTP
请求(邮件发送请求)的邮件服务器称之为SMTP服务器。
默认端口:25POP3(Post Office Protocol - Version3)即“邮局协议版本3”,此协议主要用于支持
客户端远程管理位于服务器上的邮件。服务器通过POP3把保存在服务器上的邮件
发送到个人终端上。通常把处理用户POP3请求(邮件接收请求)的邮件服务器
称之POP3服务器。
默认端口:110我们可以使用邮箱服务器软件,比如易邮邮件服务器,搭建自己的服务器,接着我们可以在
此服务器上申请邮箱,进行邮件收发。我们还可以使用foxmail、outlook等客户端软件来管理
我们的邮箱,这样我们就无需打开QQ邮箱,网易邮箱等网页了。使用foxmail等客户端软件
需要配置一下与邮箱对应的提供商的smtp服务器和pop3服务器。
JavaMail的简单使用
1.导入mail.jar包
2.使用java代码实现激活邮件的发送
代码如下:
package com.bbs.utils;import java.util.Properties;import java.util.UUID;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Message.RecipientType;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import com.sun.mail.util.MailSSLSocketFactory;/** * 发送注册激活邮件的工具类 * * @author holien * @create_Time 2017年5月31日 下午8:24:08 */public class MailUtil {/** * @param toAddr:接收方邮箱 * @param code:使用UUID产生的随机激活码 */public static void sendEmail(String toAddr, String code) throws Exception {String fromAddr = "707680958@qq.com"; // 发送方邮箱String licenseCode = "menfeesxhkyebdgd"; // QQ邮箱的授权码// 1.创建属性对象,本质就是属性文件的key-valueProperties properties = new Properties();properties.put("mail.smtp.host", "smtp.qq.com"); // 设置邮件服务器properties.put("mail.smtp.auth", "true"); // 打开认证// QQ邮箱需要下面这段代码,使用SSL加密MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put("mail.smtp.ssl.enable", "true");properties.put("mail.smtp.ssl.socketFactory", sf);// 2.由发送者发起会话,并创建认证(发送者邮箱的帐号密码)Session session = Session.getDefaultInstance(properties, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(fromAddr, licenseCode);}});// 3.创建邮件消息Message message = new MimeMessage(session);message.setFrom(new InternetAddress(fromAddr));message.addRecipient(RecipientType.TO, new InternetAddress(toAddr));message.setSubject("来自XXX网站的帐号激活");String content = "<h1>帐号激活</h1><h3>请点击此链接完成帐号激活<a href='http://localhost:8080/miniBBS/activeUser?code=" + code+ "'>http://localhost:8080/miniBBS/activeUser?code=" + code + "</a></h3>";message.setContent(content, "text/html;charset=UTF-8");//message.setText("https://www.baidu.com"); // 纯字符串文本// 4.发送邮件Transport.send(message);}/** * @return UUID生成的随机32位激活码 */public static String getCode() {return UUID.randomUUID().toString().replace("-", "");}public static void main(String[] args) throws Exception {// System.out.println(UUID.randomUUID().toString().replace("-", ""));sendEmail("18969492@qq.com", getCode());}}
用户点击激活链接后,在后台对用户发送的url中的code参数与数据库对比,
若一致,则把用户帐号设置为可用,并把激活码清空,防止多次激活。
用户登录时不仅检查帐号密码,还检查激活状态,未激活的帐号不可用。
注意:
1.运行此java application例子,需要联网,因为我们需要连接比如QQ邮箱的smtp服务器
2.若使用QQ邮箱,则发送方需要到QQ邮箱网页开启SMTP服务器,通过验证后获取授权码,
比如menfeesxhkyebdgd,不再需要邮箱本身的密码
- JavaMail简单实践
- javamail实践
- 使用javamail发送附件,实践
- 简单的JavaMail例子
- javamail 简单例子
- javaMail简单使用
- javaMail的简单应用
- JavaMail发送简单邮件
- javamail简单实例
- JavaMail简单应用
- javamail 简单demo
- javamail的简单使用
- 一个简单的javaMail
- JavaMail 发送简单邮件
- 简单的JavaMail教程
- JavaMail简单入门案例
- javamail的简单使用
- JavaMail 简单发送邮件
- Xutils3——数据库
- Docker与VirtualBox下载
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- 像大牛一样写代码: 31个Android 开发者工具
- 取到回调函数中的值赋给input文本框
- JavaMail简单实践
- java获取System.out输出内容
- 面试题:写一个算法把String类型转int类型
- set proxy for command line and build neovim without root priv
- 排序列表转换为二分查找树
- ArcGIS Server 使用Schema切图文件切图
- [乐意黎原创]centos vsftpd 显示500 OOPS: could not read chroot() list file:/etc/chroot_list
- 密码散列
- node公众号第三方模块,五分钟通过微信全网发布检测