JavaMail ~ 用户注册与激活。

JavaMail~用户注册与激活。



Java Mail。

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是 Sun 发布的用来处理 email 的 API。它可以方便地执行一些常用的邮件传输。我们可以基于 JavaMail 开发出类似于 Microsoft Outlook 的应用程序。
~百科。

应用。

用户注册后,激活验证邮件。
用户过生日,系统发送生日祝福邮件。
最新活动和优惠。


邮件收发协议。

简单邮件传输协议~Simple Mail Transfer Protocol。

SMTP 是一种提供可靠且有效的电子邮件传输的协议。SMTP 是建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP 的重要特性之一是其能跨越网络传输邮件,即“SMTP 邮件中继“。使用 SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

一组用于源地址到目的地址传送邮件的协议,由 ta 来控制信件中的中转方式。
SMTP 协议属于TCP/IP 协议簇,ta 帮助每台计算机在发送或中转信件时找到下一个目的地。
SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转发出电子邮件。
通常把处理用户 SMTP 请求(邮件发送请求)的邮件服务器称为 SMTP 服务器。

默认端口号 25。


POP3 协议。

POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本 3”。是 TCP/IP 协议族中的一员,由 RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了 SSL 加密的 POP3 协议被称为 POP3S。
本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。

默认端口号 110。


邮件收发过程。

在这里插入图片描述

邮件服务器。

使用易邮邮件服务器在本地搭建。

也可以直接使用 163 126 的服务器。


搭建开发环境。

CREATE SCHEMA `regist_web` ;

use regist_web;

CREATE TABLE `regist_web`.`user` (
  `uid` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(20) NULL DEFAULT NULL,
  `password` VARCHAR(20) NULL DEFAULT NULL,
  `nickname` VARCHAR(20) NULL DEFAULT NULL,
  `email` VARCHAR(30) NULL DEFAULT NULL,
  `state` INT NULL DEFAULT NULL,
  `code` VARCHAR(64) NULL DEFAULT NULL,
  PRIMARY KEY (`uid`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

代码。

https://gitee.com/lyfGeek/geek_javamail.git

package com.geek.utils;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailUtils {

    public static void sendMail(String to, String code) throws MessagingException {
        // 创建连接对象。连接到邮箱服务器。
        Properties props = new Properties();
//        props.setProperty("host", "")
// javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
        props.setProperty("mail.smtp.host", "smtp.qq.com");
        // com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first !
        props.put("mail.smtp.auth", "true");
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 登录到邮箱服务器。
//                return new PasswordAuthentication("lyfGeek@qq.com", "(填写自己的邮箱密码)。");
                return new PasswordAuthentication("lyfGeek@qq.com", "dmcgxzlzlnbkdidd");
//                return super.getPasswordAuthentication();
            }
        });

        // 创建邮件对象。
        Message message = new MimeMessage(session);
        // 设置发件人。
        message.setFrom(new InternetAddress("lyfGeek@qq.com"));
        // 设置收件人。
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
        // 设置邮件主题。
        message.setSubject("来自 geek 的激活邮件。");
        // 设置邮件正文。
        message.setContent("来自 geek 的激活邮件。请点击以下链接激活。" +
                "http://localhost:8080/regist_web/ActiveServlet?code=" + code, "test/html;charset=utf-8");

        // 发送一封激活邮件。
        Transport.send(message);
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyfGeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值