您的位置:首页 > 其它

【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.网易登录的客户端就能很好的读取来自新浪邮箱的邮件了。

环境搭建

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的生成代码,都是复用性很高的代码,有必要整理一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: