【SSH】--鸿雁传书,信件发送

来源:互联网 发布:win7注册表优化大全 编辑:程序博客网 时间:2024/04/28 19:55

  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的生成代码,都是复用性很高的代码,有必要整理一下。

0 0
原创粉丝点击