邮箱验证的思路及实现

本文介绍了如何在Java中使用java.mail库配置QQ或网易163邮箱的POP3/SMTP服务,并通过发送带有激活链接的邮件进行用户验证。步骤包括设置邮箱账户、配置Java Mail工具类和实现邮件发送过程。
摘要由CSDN通过智能技术生成

邮箱验证

一、开启POP3/SMTP服务

QQ邮箱、网易163邮箱均可。这里以网易163邮箱为例

1、注册163邮箱帐号,进入设置

1、进入设置的POP3/SMTP/IMAP选项在这里插入图片描述

2、开启两个服务,IMAP/SMTP、POP3/SMTP服务。会有一系列验证,最后会给一个授权码,保存好,代码里需要用到。
在这里插入图片描述

2、java里的配置

我们需要用到的jar包是java.mail。这里需要一个MailUtils工具类,里面有些东西需要修改,配置

com.xxx.util.MailUtils
package com.qhx.util;

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 email) throws Exception{
        // 1、创建一个程序与邮件服务器会话对象 Session
        // 创建参数配置,用于连接邮件服务器的参数配置
        Properties prop = new Properties();  // 参数配置
        prop.setProperty("mail.transport.protocol","SMTP"); // 使用协议,JavaMail规范要求
        prop.setProperty("mail.host","smtp.163.com"); // 发件人邮箱的SMTP服务器地址
        prop.setProperty("mail.smtp.auth","true"); // 请求认证,参数名称与具体实现有关,指定验证为true

        // 创建验证器  输入授权码,不是密码
        Authenticator auth = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 如我的邮箱  xxxxx@qq.com
                return new PasswordAuthentication("发件人的邮箱名","对应的授权码");
            }
        };

        Session session = Session.getInstance(prop,auth);

        // 2、创建一个Message,它相当于邮件内容
        Message message = new MimeMessage(session);
        // 这里要和上面对应,否则报错 
        message.setFrom(new InternetAddress("发件人的邮箱名"));

        message.setRecipient(Message.RecipientType.TO,new InternetAddress(email)); // 设置发送方式和接收者

        // 设置邮件主题
        message.setSubject("邮件主题");

        // 设置邮件正文  emailMsg内容就是邮件的内容
        String emailMsg = "这是一封激活邮件,请<a href='http://localhost:8080/Dangdang/user/emailActive.do?userEmail="+email+"'>点击</a>该链接激活账户";
        message.setContent(emailMsg,"text/html;charset=utf-8");

        // 3、创建Transport用于将邮件发送
        Transport.send(message);
    }
}

参数配置

在这里插入图片描述

3、邮箱验证思路

填写完注册表单后,就执行注册方法,只不过用户表属性为userState,代表用户的激活状态(0未激活,1激活)。

表单填写后,发送邮件(调用MailUtils的sendMail方法)。发送的邮件正文中有超链接,用户点击超链接,跳转到激活用户状态的(0–>1)的controller,再跳转到注册成功/登录页面。

endMail方法)。发送的邮件正文中有超链接,用户点击超链接,跳转到激活用户状态的(0–>1)的controller,再跳转到注册成功/登录页面。

在这里插入图片描述
有待优化,加油!

在 Laravel 中进行邮箱验证可以通过以下步骤实现: 1. 在控制器中定义验证规则: ```php $rules = [ 'email' => 'required|email|unique:users,email', ]; ``` 2. 在控制器中引入 Validator 并使用 validate 方法进行验证: ```php use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return redirect()->back()->withErrors($validator); } // 验证通过,继续执行其他操作 ``` 3. 在表单中添加邮箱输入框并设置 name 属性为 email: ```html <form action="/register" method="POST"> @csrf <label for="email">邮箱</label> <input type="email" name="email" id="email"> <button type="submit">注册</button> </form> ``` 4. 在邮箱验证邮件中添加验证链接并发送给用户: ```php use Illuminate\Support\Facades\Mail; use App\Mail\VerificationEmail; Mail::to($user->email) ->send(new VerificationEmail($user->verification_token)); ``` 5. 创建 VerificationEmail 类并定义邮件内容及验证链接: ```php use Illuminate\Mail\Mailable; class VerificationEmail extends Mailable { public $verificationToken; public function __construct(string $verificationToken) { $this->verificationToken = $verificationToken; } public function build() { $url = route('verify-email', $this->verificationToken); return $this->view('emails.verification', ['url' => $url]); } } ``` 6. 创建邮箱验证路由并处理验证逻辑: ```php use App\Models\User; Route::get('/verify-email/{token}', function ($token) { $user = User::where('verification_token', $token)->first(); if (!$user) { abort(404); } $user->update(['verification_token' => null]); return view('emails.verification-success'); })->name('verify-email'); ``` 以上就是 Laravel 中进行邮箱验证的基本步骤,具体实现可能会有所不同,但大致思路是相似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值