发送邮箱(163邮箱为例)

邮件的发送

一、注册一个网易的邮箱账号

地址:https://mail.163.com/

  1. 开启POP3/SMTP服务:

在这里插入图片描述

  1. 获取客户端的授权码和服务器的地址

在这里插入图片描述

二、实现邮件发送

  1. 导入依赖
<!--spring支持-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>5.3.3</version>
</dependency>
<!--邮件发送-->
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.1</version>
</dependency>
  1. 在xml文件中配置
<!-- 邮件发送  邮件服务器的配置 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <!-- 发送内容使用的编码 -->
    <property name="defaultEncoding" value="UTF-8" />
    <!-- 发送邮件使用的服务器地址 -->
    <property name="host" value="smtp.163.com" />
    <!-- 从那个邮箱发送邮件使用的账号,一般为自己的邮箱 -->
    <property name="username" value="lscong1003@163.com" />
    <!-- 为了保密,必须是授权码,不能是实际登录该邮箱的登录密码 -->
    <property name="password" value="您的授权码" />
    <property name="javaMailProperties">
        <props>
            <!-- 需要认证登录信息 -->
            <prop key="mail.smtp.auth">true</prop>
            <!-- 可以查看调试信息 -->
            <prop key="mail.debug">false</prop>
            <!-- 连接超时 -->
            <prop key="mail.smtp.timeout">25000</prop>
        </props>
    </property>
</bean>
<!-- 邮箱发送邮件 -->
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage" scope="singleton">
    <!-- 从那个邮箱发送邮件的邮箱 -->
    <property name="from" value="lscong1003@163.com"/>
</bean>
<!-- 开发自己的邮件发送程序 -->
<bean id="mailSenderUtil" class="com.simon.utils.MailSenderUtil">
    <!-- 注入上面配置的bean -->
    <property name="mailSender" ref="mailSender" />
    <property name="simpleMailMessage" ref="simpleMailMessage" />
</bean>
  1. 发送邮件的工具类
package com.simon.utils;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Map;

public class MailSenderUtil {
    //Java邮件发送对象
    private JavaMailSender mailSender;
    //简单邮件信息(封装邮件的信息)
    private SimpleMailMessage simpleMailMessage;
    //发送到那个邮箱,比如发给自己,设置默认为自己(可以在业务层的方法中修改),也可以发给别人,比如111111@qq.com
    //private String to = "lscong1003@163.com";
    private String to;
    //发送的邮箱的标题
    private String subject;
    //发送的邮箱的内容
    private String content;

    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public String getTo() {
        return to;
    }
    public void setTo(String to) {
        this.to = to;
    }

    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public SimpleMailMessage getSimpleMailMessage() {
        return simpleMailMessage;
    }
    public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
        this.simpleMailMessage = simpleMailMessage;
    }

    public JavaMailSender getMailSender() {
        return mailSender;
    }
    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }


    /**
     * 发送普通带附件的HTML邮件
     * @throws MessagingException
     */
    public void sendHtmlWithAttachment(Map attachments) throws MessagingException{
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
        //设置发送给那个邮箱
        messageHelper.setTo(this.getTo());
        messageHelper.setFrom(simpleMailMessage.getFrom());
        //设置发送邮件的标题
        messageHelper.setSubject(this.getSubject());
        //设置发送的内容  第二参数为是否是html邮件
        messageHelper.setText(this.getContent(),true);
        //发送邮件
        mailSender.send(mimeMessage);
    }
}


  1. 这里模拟一个找回密码的邮件发送;在注册用户的时候基本上是使用邮箱注册的,所以这里找回密码也是发送邮箱,在前端输入邮箱,查询数据库将用户的密码发送到输入的邮箱地址中,用户可以查看邮箱而得知密码,再进行登录。

  2. 前端输入邮箱的表单:

<form class="layui-form">
    <div class="layui-form-item">
        <label for="aEmail" class="layui-form-label">
            <span class="x-red">*</span>邮箱
        </label>
        <div class="layui-input-inline">
            <input placeholder="请输入找回密码的邮箱" type="text" id="aEmail" name="aEmail" required=""
                   lay-verify="aEmail"
                   autocomplete="off" class="layui-input">
        </div>
        <div class="layui-input-inline">
            <button class="layui-btn" lay-filter="send" lay-submit="">
                发送
            </button>
        </div>
    </div>
</form>
  1. 发送邮件的controller:
/*
     * 发送邮箱
     * */
@PostMapping("/sendEmail")
@ResponseBody
public Map<String, Object> sendEmail(@RequestBody Admin admin) {
    Map<String, Object> map = adminService.selectByEmail(admin);
    return map;
}
  1. 业务层
public class AdminServiceImpl implements AdminService {
	
    @Autowired
    private AdminMapper adminMapper;
    
    @Autowired
    private MailSenderUtil mailSenderUtil;
    
    public Map<String, Object> selectByEmail(Admin admin) {
        Map<String, Object> map = new HashMap<String, Object>();
        Admin admin1 = adminMapper.selectByEmail(admin.getAEmail());
        if (admin1 != null) {
            //查询到密码
            String pass = admin1.getAPass();
            //调用发送邮箱
            try {
                sendEmail(admin.getAEmail(), pass);
                map.put("code", "200");
                map.put("info", "邮件发送成功,请前往邮箱查看登录!");
                System.out.println("邮件发送成功!");
            } catch (MessagingException e) {
                System.out.println("邮件发送失败!");
                map.put("code", "500");
                map.put("info", "邮件发送失败!");
                e.printStackTrace();
            }
        }else {
            map.put("info","此邮箱不存在!");
        }
        return map;
    }

    private void sendEmail(String email, String pass) throws MessagingException {
        System.out.println("开始发送邮件!");
        //设置发送给谁
        mailSenderUtil.setTo(email);
        //设置邮件的标题
        mailSenderUtil.setSubject("密码找回 ");

        //添加标题和内容(密码)
        StringBuilder builder = new StringBuilder();
        builder.append("<html><body>密码为:");
        builder.append(pass);
        builder.append("</body></html>");
        String content = builder.toString();
        mailSenderUtil.setContent(content);
        //发送邮件
        mailSenderUtil.sendHtmlWithAttachment(null);
    }
}
  1. mapper层就自己去编写一个方法和查询数据库中的数据的xml就行了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值