zoukankan      html  css  js  c++  java
  • 用java实现邮件发送验证码

    java实现邮件发送验证码

       建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好。所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬间就好了。所以去申请个别的邮箱吧。

      用邮件发送验证码,首先需要jar包。我写的代码只需要mail.jar,没有的话可以给我留言,我给你发个。

    废话不说了直接上代码(这个代码就是个工具类直接用就好)

    package com.itheima.utils;
    
    import java.util.Properties;
    
    import javax.mail.Authenticator;
    import javax.mail.Message;
    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;
    import javax.mail.internet.MimeMessage.RecipientType;
    
    public class MailUtils {
    
    	public static void sendMail(String email, String emailMsg) throws AddressException, MessagingException {
    		// 1.创建一个程序与邮件服务器会话对象 Session
    		// 创建参数配置, 用于连接邮件服务器的参数配置
    		Properties props = new Properties(); // 参数配置 
    		props.setProperty("mail.transport.protocol", "SMTP");// 使用的协议(JavaMail规范要求)
    		props.setProperty("mail.host", "smtp.163.com");// // 发件人的邮箱的 SMTP 服务器地址
    		props.setProperty("mail.smtp.auth", "true");//请求认证,参数名称与具体实现有关 指定验证为true
    
    		// 创建验证器
    		Authenticator auth = new Authenticator() {
    			@Override
    			public PasswordAuthentication getPasswordAuthentication() {
    				// 网易邮箱Yang_li_g 用户名 hao123授权码,改为自己的账号和密码
    				return new PasswordAuthentication("Yang_li_g", "hao123");
    			}
    		};
    
    		Session session = Session.getInstance(props, auth);
    
    		// 2.创建一个Message,它相当于是邮件内容
    		Message message = new MimeMessage(session);
    		//这里也要改和上面对应,注意后缀和上面设置的一样不然会报错
    		message.setFrom(new InternetAddress("Yang_li_g@163.com")); // 设置发送者
    
    		message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者
    
    		message.setSubject("用户激活");
    		// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");
    
    		message.setContent(emailMsg, "text/html;charset=utf-8");
    
    		// 3.创建 Transport用于将邮件发送
    
    		Transport.send(message);
    	}
    }
    

    这里是servlet的代码,响应代码如下

    		// 发送激活邮件    activeCode:是验证码
    		String emailMsg = "恭喜您注册成功,请点击下面的连接进行激活账户" + "<a href='http://localhost:8080/Shop/active?activeCode="
    				+ activeCode + "'>" + "http://localhost:8080/Shop/active?activeCode=" + activeCode + "</a>";
    		try {
    			//user.getEmail()  :是注册人的邮件用户名
    			MailUtils.sendMail(user.getEmail(), emailMsg);
    		} catch (MessagingException e) {
    			e.printStackTrace();
    		}
    
    

    邮件内容你就自己随便写,我这里写的比较简单,实现就好。

    网易邮箱开通POP3/SMTP服务的步骤#

    先点击设置--》POP3/SMTP/IMAP---》找到开启的选项点击开启---》开启成功后设置密码就好了

    这里写图片描述

    这里写图片描述

    我这是设置好的可以看下。设置好了后就可以实现用邮件发验证码了。

  • 相关阅读:
    C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符
    android最新的工具DateHelper
    ssh否password登陆server
    atitit.设计模式(2) -----查询方式/ command 总结
    采用Eclipse中间Maven构建Web项目错误(一)
    dm8148 jpeg编解码器测试
    C++ 结构体和类的区别
    C++ const
    C++中的inline函数
    C++ 模板类demo
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7505780.html
Copyright © 2011-2022 走看看