【SSH】--鸿雁传书,信件发送
2015-10-26 11:03
316 查看
MarketOnLine项目和京东商城的项目很类似,只是访问的数据量小一些。这种电商类的项目,发送邮件注册用户信息是基础中的基础。要想实现该功能,我们需要如下材料。
邮件服务器
邮件协议:
POP3:Post Office Protocol - Version 3
SMTP:Simple Mail Transfer Protocol
1.首先我们有两个邮箱账号,一个新浪,一个163的,准备从新浪的发送到163的邮箱中。
2.首先登录新浪邮件客户端软件,例如foxmail。
3. 然后登录SMTP服务器,写一封邮件,包括邮件内容,标题等信息。
4.通过SMTP服务器,将邮件发送到接收服务器中,并存到本地硬盘中。
5.163的账号登录客户端软件后,访问POP3服务器,本地存到硬盘上的邮件,就会自动更新到POP3服务器中
6.网易登录的客户端就能很好的读取来自新浪邮箱的邮件了。
安装邮箱服务器:MailServer(易邮邮件服务器)
修改域名:
工具–>服务器设置–>shop.com
注册账号
账号–>新建账号
2.安装客户端软件(收发邮件):foxmail
配置:
配置发送邮件服务器
localhost(本地)
smtp(外网)
配置接受邮件服务器:
localhost(本地)
pop3(外网)
3.编码
需要引入的包:
javaee.jar
javax.annotation
javax.jms
复制的包: activation.jar
mail.jar
发邮件工具类–MailUitls:
生成UUID的代码:
业务层调用发送邮件工具类的代码:
邮件发送结果:
邮件的发送并不繁琐,明白其中的原理就好了。邮件的发送,UUID的生成代码,都是复用性很高的代码,有必要整理一下。
材料
电子邮箱邮件服务器
邮件协议:
POP3:Post Office Protocol - Version 3
SMTP:Simple Mail Transfer Protocol
邮件发送原理
1.首先我们有两个邮箱账号,一个新浪,一个163的,准备从新浪的发送到163的邮箱中。
2.首先登录新浪邮件客户端软件,例如foxmail。
3. 然后登录SMTP服务器,写一封邮件,包括邮件内容,标题等信息。
4.通过SMTP服务器,将邮件发送到接收服务器中,并存到本地硬盘中。
5.163的账号登录客户端软件后,访问POP3服务器,本地存到硬盘上的邮件,就会自动更新到POP3服务器中
6.网易登录的客户端就能很好的读取来自新浪邮箱的邮件了。
环境搭建
1.搭建邮件服务器安装邮箱服务器:MailServer(易邮邮件服务器)
修改域名:
工具–>服务器设置–>shop.com
注册账号
账号–>新建账号
2.安装客户端软件(收发邮件):foxmail
配置:
配置发送邮件服务器
localhost(本地)
smtp(外网)
配置接受邮件服务器:
localhost(本地)
pop3(外网)
3.编码
需要引入的包:
javaee.jar
javax.annotation
javax.jms
复制的包: activation.jar
mail.jar
发邮件工具类–MailUitls:
/** * @ClassName:MailUitls * @Description:TODO * @author wangmei * @date 2015年10月2日下午7:48:22 * @{tags} */ package cn.itcast.shop.utils; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * 邮件发送工具类 * @author wm * */ public class MailUitls { /** * 发送邮件的方法 * @param to:收件人 * @param code:激活码 */ public static void sendMail(String to ,String code){ /** * 1.获得一个Session对象 * 2.创建一个代表邮件的对象Message * 3.发送邮件Transport */ //1.获得连接对象 ,Alt+shift+s Properties props=new Properties(); props.setProperty("mail.host", "localhost"); Session session=Session.getInstance(props, new Authenticator(){ @Override protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication("service@shop.com","111"); } }); //2.创建邮件对象: Message message=new MimeMessage(session); //设置发件人: try{ message.setFrom(new InternetAddress("service@shop.com")); //设置收件人: message.addRecipient(RecipientType.TO, new InternetAddress(to)); //抄送cc 密送Bcc //设置标题 message.setSubject("来自购物天堂TGB商城官方邮件"); //设置邮件正文 message.setContent("<h1>购物天堂TGB商城官方激活邮件!点下面链接完成激活操作!</h1><h3><a href='http://192.168.24.175:8080/shop/user_active.action?code="+code +"'>http://192.168.24.175:8080/shop/user_active.action?code="+code +"</a></h3>","text/html;charset=UTF-8"); //3.发送邮件 Transport.send(message); }catch(AddressException e){ e.printStackTrace(); }catch(MessagingException e){ e.printStackTrace(); } } //测试邮件发送是否成功的的控制台代码 /*public static void main(String[] args){ sendMail("aaa@shop.com","11111111111111"); }*/ }
生成UUID的代码:
/** * @ClassName:UUIDUtils * @Description:TODO * @author wangmei * @date 2015年10月2日下午4:52:09 * @{tags} */ package cn.itcast.shop.utils; import java.util.UUID; /** * 生成随机字符串的工具类 * @author wm * */ public class UUIDUtils { /** * 获得随机字符串 * @return */ public static String getUUID(){ return UUID.randomUUID().toString().replace("-", ""); } }
业务层调用发送邮件工具类的代码:
/** * 业务层完成用户注册代码 * @param user */ public void save(User user) { //将数据存入到数据库 user.setState(0);//0:代表用户未激活 1:代表用户已经激活 String code=UUIDUtils.getUUID()+UUIDUtils.getUUID(); user.setCode(code); userDao.save(user); //发送激活邮件 MailUitls.sendMail(user.getEmail(), code); }
邮件发送结果:
邮件的发送并不繁琐,明白其中的原理就好了。邮件的发送,UUID的生成代码,都是复用性很高的代码,有必要整理一下。
相关文章推荐
- 在android上实现图像匹配
- codeforces 591B - Rebranding(模拟)
- Android获取图片大小以及获取指定大小的缩略图
- 向量空间初步
- coderforce 591B Rebranding
- ios自动化测试资料
- 算法求第K小元素思路
- mysql语句:批量更新多条记录的不同值
- Druid——阿里巴巴的开源项目(关于数据库连接、监控)
- P51、面试题5:从尾到头打印链表
- Hibernate在进行one-to-many时的级联设置-cascade
- LeetCode_Remove Duplicates from Sorted Array
- Qt的三方库
- 九度OJ 1182:统计单词 (计数)
- 如何将word转换成pdf的两种便捷方法
- 最全测试工具大全
- MVC5中页面传值,保存,回传
- 九度OJ 1182:统计单词 (计数)
- 免安装版MySQL的配置
- 327 (Div. 2)A