ホームページ Java &#&チュートリアル Javaでメール登録機能を完成させる例を詳しく解説

Javaでメール登録機能を完成させる例を詳しく解説

May 12, 2017 am 09:32 AM
boot java spring

この記事では主にメール登録機能を実装する Spring Boot のサンプルコードを紹介しますが、編集者が非常に良いと思ったので、参考として共有させていただきます。エディターをフォローして見てみましょう

登録プロセス

1. [フロントエンド] ユーザーは登録ページで登録情報を送信します

2. 送信されたパラメーターを確認します。エラーがある場合は、ユーザーが直接エラーメッセージを返し、エラーなしで実行します。

3. [バックエンド] IDをランダムに生成し、そのIDをキーとして使用し、それを値として保存します。 redis、期間を設定します

4 .[バックエンド] アクティブ化リンクを生成し、電子メール システムを通じてユーザーのメールボックスに電子メールを送信します

5.[フロントエンド] ユーザーは、上の図;

6.[バックエンド] 値が期限切れかどうかを確認し、登録されていない場合は、ユーザー情報をデータベースに保存し、ユーザーが正常に登録されたことを確認します。実装 (逆分析)

1. まず、mail送信

cn.ictgu.toolsの実装を見てみましょう。 mail.MailService

package cn.ictgu.tools.mail;

import cn.ictgu.dao.model.User;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

/**
 * 邮件服务
 * Created by Silence on 2017/3/11.
 */
@Service
@Log4j
public class MailService {

 @Autowired
 private JavaMailSender mailSender;

 @Value("${spring.mail.username}")
 private String from;

 private static final String TITLE_SIGN_UP = "[邮件标题]";

 private static final String CONTENT = "[邮件内容]";

 public void userValidate(User user, String token){
 MimeMessage mailMessage = mailSender.createMimeMessage();
 try {
  MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "GBK");
  helper.setFrom(from);
  helper.setTo(user.getEmail());
  helper.setSubject(TITLE_SIGN_UP);
  String link = "http://www.ictgu.cn/validate/" + token;
  String message = String.format(CONTENT, user.getNickname(), link, link, user.getEmail());
  helper.setText(message, true);
  mailSender.send(mailMessage);
 } catch (MessagingException e) {
  log.error("发送邮件失败:User:" + JSONObject.toJSONString(user) + ", Token: " + token);
 }

 }
ログイン後にコピー
説明: 電子メールを送信するには、2つのパラメータを渡す必要があります。 、ユーザーとトークン。ユーザーはユーザー登録

の情報です。トークンはredisに対応するキーがあり、その値はユーザーの

文字列です。 (重要なルールは設定ファイルredis.prefix.signUp + UUID) メールテンプレートの問題:

メールコンテンツの本質は文字列であり、スタイルは開発中にhtml+cssによって制御されます。 、メールは適切なテンプレートに設計されています。
変数
を %s に置き換えてから、メールを送信するときに String.format() メソッドを使用して %s を実際の値に置き換えてください。エンドユーザーにはメールが表示されます。したがって、サードパーティのテンプレートを使用する必要はなく、同じ機能を可能な限り簡素化できます。

2. トークンを生成するには? cn.ictgu.redis.RedisTokenManager を参照してください

 public String getTokenOfSignUp(User user){
 String token = UUID.randomUUID().toString();
 String value = JSONObject.toJSONString(user);
 stringRedisTemplate.opsForValue().set(signUpPrefix + token, value);
 stringRedisTemplate.expire(signUpPrefix + token, 12, TimeUnit.HOURS);
 return token;
 }
ログイン後にコピー

説明: UUID.randomUUID().toString() は、主キーを自動的に生成するために javaJDK によって提供されるメソッドです。 UUID (Univers

all

y Unique Ident

if

ier) は、マシン上で生成される、同じ時間および空間内のすべてのマシンに対して一意であることが保証されている 16 桁の数字で構成されます。数字で構成され、形式で表現されます。これは次の部分の組み合わせです: 現在の日付と時刻 (UUID の最初の部分は時刻に関連しており、数秒後に UUID を生成すると、最初の部分は異なり、残りは同じになります)。クロック シーケンス、グローバルに一意の IEEE マシン識別番号 (ネットワーク カードがある場合はネットワーク カードから取得され、ネットワーク カードがない場合は他の方法で取得されます) UUID の唯一の欠点は、生成される UUID です。結果の文字列は比較的長くなります。 3. トークンを取得したら、電子メールを送信するためにサービス層でユーザーとトークンを関連付ける必要があります。cn.ictgu.dao.service.UserService

注: 電子メールの送信には時間がかかります。 、そのため、ユーザーエクスペリエンスを向上させる非同期を使用してください

4. ユーザーはシンプルです

@RestController
public class UserApi {

 @Autowired
 private UserService userService;

 @RequestMapping(value = "/sign-up", method = RequestMethod.POST)
 public SimpleResponse signUp(HttpServletRequest request){
 User user = createUser(request);
 SimpleResponse response = checkSignUpRequest(user);
 if (response.getCode() == 100){
  if (!userService.signUp(user)){
  response.setCode(200);
  response.setMessage("此邮箱已注册,请勿重复注册!");
  return response;
  }else {
  response.setMessage("注册激活邮件已发送至您邮箱,请在12小时内激活完成注册!");
  return response;
  }
 }
 return response;
 }

 private SimpleResponse checkSignUpRequest(User user){
 SimpleResponse response = new SimpleResponse();
 String email = user.getEmail();
 if (!CheckUtils.checkEmail(email)){
  response.setCode(200);
  response.setMessage("邮箱格式不合法");
  return response;
 }
 String password = user.getPassword();
 if (!CheckUtils.checkPassword(password)){
  response.setCode(200);
  response.setMessage("密码长度必须为8-16位,且必须包含数字和字母");
  return response;
 }
 String nickname = user.getNickname();
 if (!CheckUtils.checkNickname(nickname)){
  response.setCode(200);
  response.setMessage("昵称长度不合法");
  return response;
 }
 response.setCode(100);
 return response;
 }

}
ログイン後にコピー

説明: このレイヤーは主にユーザー登録パラメーターの検証を行います

レンダリング

レビュー

下から上へ、これはユーザーを登録してメールを送信することで実現されます。ユーザーの行動は信頼できないため、

安全な

バックエンドシステムを構築するために必要です。死角なくパラメータを検証できます。 。 。 。 【関連お勧め】1.

Java無料ビデオチュートリアル

2. YMPオンラインマニュアル

3.

JAVA初心者向けビデオチュートリアル

以上がJavaでメール登録機能を完成させる例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

See all articles