邮箱验证总结

1.预备知识

smtp与pop3

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议
SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本
POP3服务器则是遵循POP3协议的接收邮件服务器

即:SMTP是发送邮件协议
POP3是接收邮件协议

2.java实现准备

  1. java中需要使用javax.mail-1.5.1.jar 这个包来发送邮件
  2. 帐号准备【注册一个163邮箱,以后公司会有自己的邮件服务器,到时改公司公司的即可】

3.代码实现

工具类:

package com.gyf.bookstore.utils;

import java.util.Properties;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 发送邮件时候: 向运维:维护服务器Linux 
 * 索要:
 * 1.smtp服务器地址,smtp.163.com 
 * 2.发送邮件的端口号:默认25
 * 3.发件人的账号和密码
 * 
 * 
 *
 */
public class SendJMail {
	static final String smtphost = "smtp.163.com";//smtp服务器地址
	static final String from = "z2395951674@163.com"; // 邮件发送人的邮件地址
	static final String username = "z2395951674@163.com"; // 发件人的邮件帐户
	static final String password = "xxxxxxx"; // 发件人的邮件密码,指的是是客户端授权码,找了好久
	
	/**
	 * 
	 * @param email
	 *            接收人的邮箱地址
	 * @param emailMsg
	 *            邮箱内容
	 * @return
	 */
	public static boolean sendMail(String email, String emailMsg) {
		
		String to = email; // 邮件接收人的邮件地址
		// 定义Properties对象,设置环境信息
		Properties props = System.getProperties();

		// 设置邮件服务器的地址
		props.setProperty("mail.smtp.host", smtphost); // 指定的smtp服务器
		props.setProperty("mail.smtp.auth", "true");
		props.setProperty("mail.transport.protocol", "smtp");// 设置发送邮件使用的协议

		// 创建Session对象,session对象表示整个邮件的环境信息
		Session session = Session.getInstance(props);
		// 设置输出调试信息
		session.setDebug(true);
		try {
			// Message的实例对象表示一封电子邮件
			MimeMessage message = new MimeMessage(session);
			// 设置发件人的地址
			message.setFrom(new InternetAddress(from));
			// 设置主题
			message.setSubject("用户激活");
			// 设置邮件的文本内容
			// message.setText("Welcome to JavaMail World!");
			message.setContent((emailMsg), "text/html;charset=utf-8");

			// 设置附件
			// message.setDataHandler(dh);

			// 从session的环境中获取发送邮件的对象
			Transport transport = session.getTransport();
			// 连接邮件服务器
			transport.connect(smtphost, 25, username, password);
			// 设置收件人地址,并发送消息
			transport.sendMessage(message, new Address[] { new InternetAddress(to) });
			transport.close();
			return true;
		} catch (MessagingException e) {
			e.printStackTrace();
			return false;
		}
	}
}

service里使用:

/**
	 * 注册
	 * @param user
	 */
	public void register(User user) {
		try {
			//注册的用户保存到数据库
			userDao.add(user);
			//发送激活邮箱
			String link = "http://localhost:9090/bookstore/active?activeCode=" + user.getActiveCode();//端口号没改9090,导致错误
			String html = "<a href=\"" + link + "\">欢迎注册网上书城帐号,请点击激活</a>";
			System.out.println("激活:"+html);
			SendJMail.sendMail(user.getEmail(), html);	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new UserException("注册失败");
		}
	}

4.细节注意

163邮箱设置
在这里插入图片描述
在这里插入图片描述
注:这里的授权码即为工具类里写的发件人的邮件密码,我开始以为是登录邮箱的密码,一直成功不了,浪费了很多时间!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值