天天看點

背景管理系統之郵件開發(Java實作)

一,功能點

背景管理系統,添加使用者時。對注冊的新使用者郵箱發送初始密碼。

背景管理系統之郵件開發(Java實作)

二,代碼實作

1.Mail實體類

public class Mail {

    private Set<String> receivers; // 收件人的郵箱

    private String subject; // 主題

    private String message; // 資訊(支援HTML)

    public Mail() {
    }

    public Mail(Set<String> receivers, String subject, String message) {
        this.receivers = receivers;
        this.subject = subject;
        this.message = message;
    }

    public Set<String> getReceivers() {
        return receivers;
    }

    public void setReceivers(Set<String> receivers) {
        this.receivers = receivers;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }


}      

2.郵箱工具類

package com.ideal.manage.guest.util;

import com.ideal.manage.guest.bean.mail.Mail;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created on 15/11/21.
 * Remark:發送郵件工具類
 */

public class MailUtil {

    private static Logger logger = LoggerFactory.getLogger(MailUtil.class);

    public static boolean send(Mail mail) {

        String from = "[email protected]";//填寫自己的郵箱
        int port = 25;
        String host = "smtp.126.com";//這裡我用的是smtp協定
        String pass = "qwer1234";//填寫自己的郵箱的授權碼
        String nickname = "admin";

        HtmlEmail email = new HtmlEmail();
        try {
            email.setHostName(host);
            email.setCharset("UTF-8");
            for (String str : mail.getReceivers()) {
                email.addTo(str);
            }
            email.setFrom(from, nickname);
            email.setSmtpPort(port);
            email.setAuthentication(from, pass);
            email.setSubject(mail.getSubject());
            email.setMsg(mail.getMessage());
            email.send();
            logger.info("{} 發送郵件到 {}", from, StringUtils.join(mail.getReceivers(), ","));
            return true;
        } catch (EmailException e) {
            logger.error(from + "發送郵件到" + StringUtils.join(mail.getReceivers(), ",") + "失敗", e);
            return false;
        }
    }

}      

3.業務代碼:添加使用者時,發送郵件

/**
     * 儲存使用者
     * @param id
     * @param loginName
     * @param password
     * @param name
     * @param sex
     * @param telephone
     * @param mobile
     * @param email
     * @param role
     * @param customer
     * @param jobTitle
     * @param remark
     */
    public void saveUser(String id,String loginName,String password,
                         String name,Long sex,String telephone,
                         String mobile,String email,String role,
                         String customer,String jobTitle,String remark){
        MyShiroRealm.ShiroUser shiroUser = (MyShiroRealm.ShiroUser) SecurityUtils.getSubject().getPrincipal();
        User user = new User();
        if(id != null){
            user = findById(id);
            user.setLastUpdateUser(new User(shiroUser.getId()));
            user.setLastUpdateTime(new Date());
        }else {
            user.setCreateTime(new Date());
            user.setCreateUser(new User(shiroUser.getId()));
            user.setDelFlag(0L);
        }
        user.setLoginName(loginName);

        user.setPassword(password);
        //密碼加密
        PasswordHelper passwordHelper = new PasswordHelper();
        passwordHelper.encryptPassword(user);
        user.setName(name);
        user.setSex(sex);
        user.setTelephone(telephone);
        user.setMobile(mobile);
        user.setEmail(email);

        if(role != null){
            Role r = roleService.findById(role);
            user.setRole(r);
        }
        if(customer != null){
            Customer c = customerService.findById(customer);
            user.setCustomer(c);
        }
        user.setJobTitle(jobTitle);
        user.setRemark(remark);
        userRepository.save(user);

        //發送郵件
        String message = "您的賬戶已經開通, 請妥善保管好您的個人密碼:" + password;
        String subject = "使用者添加成功通知";
        sendEmailToUser(user, subject, message);

    }

    /**
     * 發送郵件
     * @param user
     * @param subject
     * @param message
     */
    private void sendEmailToUser(User user, String subject, String message) {
        Mail mail = new Mail();
        mail.setMessage(message);
        mail.setReceivers(Sets.newHashSet(user.getEmail()));
        mail.setSubject(subject);
        MailUtil.send(mail);
    }      

4.對了,别忘了在pom添加依賴

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.4</version>
        </dependency>
      

 三,郵箱配置

登入我的126郵箱後找到設定,如下圖

背景管理系統之郵件開發(Java實作)

把POP3/SMTP/IMAP勾上就可以了,并設定授權碼就可以了。

背景管理系統之郵件開發(Java實作)

添加使用者後,你的郵箱會收到一封郵件

背景管理系統之郵件開發(Java實作)