zoukankan      html  css  js  c++  java
  • 关于邮箱功能

    0x001需求分析

      

    0x002编写代码

    Servlet

    @WebServlet("/activeUserServlet")
    public class ActiveUserServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.获取激活码
            String code = request.getParameter("code");
            if(code != null){
                //2.调用service完成激活
                UserService service = new UserServiceImpl();
                boolean flag = service.active(code);
    
                //3.判断标记
                String msg = null;
                if(flag){
                    //激活成功
                    msg = "激活成功,请<a href='login.html'>登录</a>";
                }else{
                    //激活失败
                    msg = "激活失败,请联系管理员!";
                }
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().write(msg);
            }
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    

      0x003ServiceImpl

        /**
         * 注册用户
         * @param user
         * @return
         */
        @Override
        public boolean regist(User user) {
            //1.根据用户名查询用户对象
            User u = userDao.findByUsername(user.getUsername());
            //判断u是否为null
            if(u != null){
                //用户名存在,注册失败
                return false;
            }
            //2.保存用户信息
            //2.1设置激活码,唯一字符串
            user.setCode(UuidUtil.getUuid());
            //2.2设置激活状态
            user.setStatus("N");
            userDao.save(user);
    
            //3.激活邮件发送,邮件正文?
    
            String content="<a href='http://localhost/travel/user/active?code="+user.getCode()+"'>点击激活</a>";
    
            MailUtils.sendMail(user.getEmail(),content,"激活邮件");
    
            return true;
        }
    

        0x004

        /**
         * 修改指定用户激活状态
         * @param user
         */
        @Override
        public void updateStatus(User user) {
            String sql = " update tab_user set status = 'Y' where uid=?";
            template.update(sql,user.getUid());
        }  

    看视频,胡乱撸一下,重要是Email的功能,实现需要注意,不同邮箱不同验证码,MailUtil工具类了解一下。

    贴下工具类MailUtil

    /**
     * 发邮件工具类
     */
    public final class MailUtils {
        private static final String USER = ""; // 发件人称号,同邮箱地址
        private static final String PASSWORD = ""; // 如果是qq邮箱可以使户端授权码,或者登录密码
    
        /**
         *
         * @param to 收件人邮箱
         * @param text 邮件正文
         * @param title 标题
         */
        /* 发送验证信息的邮件 */
        public static boolean sendMail(String to, String text, String title){
            try {
                final Properties props = new Properties();
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.host", "smtp.qq.com");
    
                // 发件人的账号
                props.put("mail.user", USER);
                //发件人的密码
                props.put("mail.password", PASSWORD);
    
                // 构建授权信息,用于进行SMTP进行身份验证
                Authenticator authenticator = new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        // 用户名、密码
                        String userName = props.getProperty("mail.user");
                        String password = props.getProperty("mail.password");
                        return new PasswordAuthentication(userName, password);
                    }
                };
                // 使用环境属性和授权信息,创建邮件会话
                Session mailSession = Session.getInstance(props, authenticator);
                // 创建邮件消息
                MimeMessage message = new MimeMessage(mailSession);
                // 设置发件人
                String username = props.getProperty("mail.user");
                InternetAddress form = new InternetAddress(username);
                message.setFrom(form);
    
                // 设置收件人
                InternetAddress toAddress = new InternetAddress(to);
                message.setRecipient(Message.RecipientType.TO, toAddress);
    
                // 设置邮件标题
                message.setSubject(title);
    
                // 设置邮件的内容体
                message.setContent(text, "text/html;charset=UTF-8");
                // 发送邮件
                Transport.send(message);
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    
        public static void main(String[] args) throws Exception { // 做测试用
            MailUtils.sendMail("itcast_xian@163.com","你好,这是一封测试邮件,无需回复。","测试邮件");
            System.out.println("发送成功");
        }
    
    
    
    }
    

      

      

  • 相关阅读:
    潜水员(二维DP)
    开餐馆(OJ 6045)
    石子归并(区间DP)
    庆功会(多重背包)
    JavaScript案例三:动态显示时间
    JavaScript案例二:在末尾添加节点
    JavaScript案例一:Window弹窗案例
    JavaScript BOM对象介绍
    JavaScript模拟函数重载
    MapReduce作业和任务
  • 原文地址:https://www.cnblogs.com/money131/p/11515647.html
Copyright © 2011-2022 走看看