>  기사  >  Java  >  Java에서 이메일 등록 기능을 완성하는 예제에 대한 자세한 설명

Java에서 이메일 등록 기능을 완성하는 예제에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-12 09:32:452375검색

이번 글에서는 이메일 등록 기능을 구현하기 위한 Spring Boot의 샘플 코드를 주로 소개하고 있는데, 편집자가 보기엔 꽤 괜찮다고 해서 지금부터 공유하고 참고용으로 올려보겠습니다. 편집자를 따라가서 살펴보겠습니다

등록 절차

1. [프런트엔드] 사용자는 등록 페이지에서 등록 정보를 제출합니다.

2.[백엔드] 사용자가 제출한 매개변수를 확인하고, 오류가 있으면 바로 오류 메시지를 반환하고, 오류가 없으면 실행합니다.

3.[백엔드] ID를 무작위로 생성하고 ID를 로, 사용자 정보를 값으로 사용하여 redis에 저장하고 설정

4.[백엔드] 활성화 링크를 생성하고 이메일 시스템을 통해 사용자의 메일함으로 이메일을 보냅니다.

5.[프런트엔드] 위 그림에서 사용자가 "등록 확인"을 클릭합니다.

6.[백엔드] 끝] 값이 만료되었는지 확인하고, 이메일 주소가 등록되었는지 확인합니다.

함수 구현(역분석)

먼저 구현을 살펴보겠습니다. 메일 보내기 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);
 }

 }

설명: 이메일을 보내려면 user 및 token 2가지 매개변수를 전달해야 하며, 사용자는 에 대한 정보를 등록해야 합니다. > user. 토큰은 임의의 UUID입니다. redis에 해당 키가 있으며 해당 값은 사용자의 json 문자열 입니다. (핵심 규칙은 구성 파일 redis.prefix.signUp + UUID입니다)

이메일 템플릿 문제:

이메일 내용 문자열이며 스타일은 html+css로 제어합니다. 개발 시 메일함에서 템플릿을 디자인하고 변수 를 %s로 바꾼 후 전체 문자열을 적절한 위치에 저장합니다. 이메일을 보낼 때 String.format() 메소드를 사용하여 %s를 실제 값으로 대체하여 최종 사용자가 볼 수 있는 이메일을 생성합니다. 따라서 타사 템플릿을 사용할 필요가 없습니다. jar 패키지를 추가하면 동일한 기능이 최대한 단순화될 수 있습니다.

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(Universally Unique Identifier) 전역 고유 식별자는 하나의 머신에서 생성된 번호를 말하며, 이는 동일한 시간과 공간의 모든 머신에서 유효함을 보장합니다. 유일한 것은 16자리 숫자로 구성된 형태이다. 다음 부분의 조합입니다: 현재 날짜 및 시간(UUID의 첫 번째 부분은 시간과 관련되어 있으며, 몇 초 후에 UUID를 생성하면 첫 번째 부분이 다르고 나머지 부분은 동일함), 전역적으로 고유한 IEEE 기계 식별 번호인 clock Sequence(네트워크 카드가 있으면 네트워크 카드에서 가져오고, 네트워크 카드가 없으면 다른 방법으로 가져옵니다.) UUID의 유일한 결함은 생성된다는 것입니다. 결과 문자열은 상대적으로 길어집니다.

3. 토큰이 있으면 서비스 계층에서 사용자와 토큰을 연결하여 이메일을 보내야 합니다. cn.ictgu.dao.service.UserService

 public boolean signUp(User user){
 String email = user.getEmail();
 if (existEmail(email)){
  log.error("用户注册,邮箱已注册:" + email);
  return false;
 }
 sendValidateEmail(user);
 return true;
 }

 @Async
 private void sendValidateEmail(User user){
 String token = tokenManager.getTokenOfSignUp(user);
 log.error("用户注册,准备发送邮件:User:" + JSONObject.toJSONString(user) + ", Token: " + token);
 mailService.userValidate(user, token);
 }

 private boolean existEmail(String email){
 return mapper.selectByEmail(email) != null;
 }

참고: 이메일을 보내는 데 시간이 오래 걸립니다. 사용자 경험을 개선하려면 비동기 처리를 사용하세요

4. 사용자는 간단합니다

rree

설명: 이 레이어는 주로 사용자 등록 매개변수를 확인합니다

렌더링

리뷰

아래에서 위로 사용자 등록부터 이메일 전송이 이루어지더라도 사용자 행동 을 신뢰할 수 없기 때문에 대부분의 코드는 매개변수 확인에 사용됩니다. 안전한 백엔드 시스템을 구축하려면 사각지대 없이 확인해야 합니다. . . .

【관련 추천】

1. Java 무료 동영상 튜토리얼

YMP 온라인 매뉴얼

3. JAVA 초보자 동영상 튜토리얼

위 내용은 Java에서 이메일 등록 기능을 완성하는 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.