SSH网上商城---邮件发送

来源:互联网 发布:凯里欧文16年数据 编辑:程序博客网 时间:2024/05/01 03:06

 注册网站账号的时候,都需要发送激活邮件,然后让注册的用户点击激活链接方可完成注册,不过话说回来,为什么注册的时候需要发送邮件呢?为什么不注册的时候直接激活呢?一定要收一封激活帐号的邮件?网站这样做的好处是什么?又或者说这样做的目的又是什么呢?小编想到了几点,不是很完整,还请小伙伴多多指教,首先确保注册的用户使用了正确的邮箱;第二,用户密码丢失的时候,通过邮箱找回或者忘记密码的时候重置密码比较安全;第三,通过有效邮箱建立用户数据库,对流失用户可以展开二次营销。在最近的项目中,遇到这样的需求,注册的时候,需要向发送邮件,今天这篇博客,小编就简单的来总结一下,如何实现邮件发送这个功能,希望对有需要的小伙伴有一定的帮助,还请各位大牛们多多指教。

       首先第一步,我们需要搭建邮箱服务器,安装邮箱服务器,小编已经上传,点击下载,安装服邮箱服务器,注册账号,如下图所示:

        

       第二步、我们需要安装客户端软件,最常用的outlook和foxmail都可以,需要注意的是,一定要进行配置哦,比如小编在服务器上新建了一个帐号aaa@shop.com,我们就需要在foxmail里面进行配置,如下图所示:

        

        接着我们来编写代码实现邮件发送,是不是有点点小激动nie`(*∩_∩*)′,要想实现邮件发送的功能,首先我们需要把mail.jar包和activation.jar包复制到lib文件下,这两个jar包是管邮件发送的,小编已经上传,点击下载。jar包已经导入好,接着我们就可以编写代码了,首先我们在utils包下面建立一个类MailUitls,具体代码如下所示: 

[java] view plaincopyprint?
  1. <span style="font-size:18px;">package cn.itcast.shop.utils;  
  2.   
  3. import java.util.Properties;  
  4.   
  5. import javax.mail.Authenticator;  
  6. import javax.mail.Message;  
  7. import javax.mail.Message.RecipientType;  
  8. import javax.mail.MessagingException;  
  9. import javax.mail.PasswordAuthentication;  
  10. import javax.mail.Session;  
  11. import javax.mail.Transport;  
  12. import javax.mail.internet.AddressException;  
  13. import javax.mail.internet.InternetAddress;  
  14. import javax.mail.internet.MimeMessage;  
  15.   
  16. /** 
  17.  * 邮件发送工具类 
  18.  * @author 丁国华 
  19.  * 
  20.  */  
  21. public class MailUitls {  
  22.     /** 
  23.      * 发送邮件的方法 
  24.      * @param to    :收件人 
  25.      * @param code  :激活码 
  26.      */  
  27.     public static void sendMail(String to,String code){  
  28.         /** 
  29.          * 1.获得一个Session对象. 
  30.          * 2.创建一个代表邮件的对象Message. 
  31.          * 3.发送邮件Transport 
  32.          */  
  33.         // 1.获得连接对象  
  34.         Properties props = new Properties();  
  35.         props.setProperty("mail.host""localhost");  
  36.         Session session = Session.getInstance(props, new Authenticator() {  
  37.   
  38.             @Override  
  39.             protected PasswordAuthentication getPasswordAuthentication() {  
  40.                 return new PasswordAuthentication("service@shop.com""111");  
  41.             }  
  42.               
  43.         });  
  44.         // 2.创建邮件对象:  
  45.         Message message = new MimeMessage(session);  
  46.         // 设置发件人:  
  47.         try {  
  48.             message.setFrom(new InternetAddress("service@shop.com"));  
  49.             // 设置收件人:  
  50.             message.addRecipient(RecipientType.TO, new InternetAddress(to));  
  51.             // 抄送 CC   密送BCC  
  52.             // 设置标题  
  53.             message.setSubject("来自网上商城的官方激活邮件");  
  54.             // 设置邮件正文:  
  55.             message.setContent("<h1>网上商城官方激活邮件!点下面链接完成激活操作!</h1><h3><a href='http://192.168.36.103:8080/shop/user_active.action?code="+code+"'>http://192.168.21.242:8080/shop/user_active.action?code="+code+"</a></h3>""text/html;charset=UTF-8");  
  56.             // 3.发送邮件:  
  57.             Transport.send(message);  
  58.         } catch (AddressException e) {  
  59.             e.printStackTrace();  
  60.         } catch (MessagingException e) {  
  61.             e.printStackTrace();  
  62.         }  
  63.           
  64.     }  
  65.       
  66.     public static void main(String[] args) {  
  67.         sendMail("aaa@shop.com","11111111111111");  
  68.     }  
  69. }  
  70. </span>  
       接着我们需要在UserService.java中发送激活邮件,代码如下所示:
[java] view plaincopyprint?
  1. <span style="font-size:18px;">package cn.itcast.shop.user.service;  
  2.   
  3. import org.springframework.transaction.annotation.Transactional;  
  4.   
  5. import cn.itcast.shop.user.dao.UserDao;  
  6. import cn.itcast.shop.user.vo.User;  
  7. import cn.itcast.shop.utils.MailUitls;  
  8. import cn.itcast.shop.utils.UUIDUtils;  
  9.   
  10. /** 
  11.  * 用户模块业务层代码 
  12.  * @author 丁国华 
  13.  */  
  14.   
  15. @Transactional  
  16.   
  17. public class UserService {  
  18.       
  19.     //注入UserDao  
  20.     private UserDao userDao;  
  21.       
  22.     public void setUserDao(UserDao userDao){  
  23.         this.userDao =userDao;  
  24.           
  25.           
  26.     }  
  27.       
  28.     //按用户名查询用户的方法  
  29.     public User findByUsername (String username){  
  30.         return userDao.findByUsername(username);  
  31.     }  
  32.   
  33.     //业务层完成用户注册代码  
  34.     public void save(User user) {  
  35.         //将数据存入到数据库  
  36.         user.setState(0); //0代表用户激活  1代表用户已经激活  
  37.         String code = UUIDUtils.getUUID()+UUIDUtils.getUUID();  
  38.         user.setCode(code);  
  39.         userDao.save(user);  
  40.           
  41.         //发送激活邮件  
  42.         MailUitls.sendMail(user.getEmail(), code);  
  43.           
  44.           
  45.     }  
  46.   
  47. }  
  48. </span>  

        最关键的代码就是后面的一句,发送激活邮件,至此,我们的代码部分已经编写完毕,我们来注册一个帐号,如下图所示:

         

        来看看小编的邮箱,有没有收到邮件呢?效果图如下所示:

           

        我们来看一下我们的数据库,如下图所示:

                             如上图,我们所看见的,数据可以插入到数据库里面,但是出现了中文乱码问题,怎么解决呢?我们可以对JDBC进行如下设置,具体代码如下所示:       

[java] view plaincopyprint?
  1. <span style="font-size:18px;">jdbc.driver = com.mysql.jdbc.Driver  
  2. jdbc.url = jdbc:mysql:///shop?characterEncoding=UTF-8  
  3. jdbc.user = root  
  4. jdbc.password =123456</span>  
        我们再来重新注册一次,如下图所示:

         

        接着,我们来看一下数据库里面,会有怎么样的奇迹nie?如下图所示:

        

       小编寄语:这篇博客小编主要简单的介绍了用户注册的时候发送激活邮件,总的来说分为三步,第一步用户注册以及为什么注册的时候需要发送激活邮件;第二步发送激活邮件,包括搭建邮箱服务器,安装客户端软件等等;第三步、编码实现发送邮件,在实现这个功能的时候,小编犯了一个错误,那就是在foxmail里面没有配置账号,导致收不到邮件,所以说一定要信息啊,在下一篇博客中,小编将继续介绍SSH网上商城的相关知识,精彩未完待续`(*∩_∩*)′!

声明:此片文章为转载

0 0
原创粉丝点击