Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Java专题_03】使用springboot发送邮件

【Java专题_03】使用springboot发送邮件

作者头像
夏之以寒
发布于 2024-03-04 09:19:35
发布于 2024-03-04 09:19:35
13200
代码可运行
举报
文章被收录于专栏:Elasticsearch专栏Elasticsearch专栏
运行总次数:0
代码可运行

一、创建项目过程

1、以我自己的项目工程图为例(随便创建 一个sprinboot项目即可) 在pox.xml中添加依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <!-- 发送邮件 -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>

2、创建一个SendEmailService接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xsy.service;

public interface SendEmailService {
    //发送邮件接口
    int sendEmail(String addr) throws Exception;
}

3、创建一个发送邮件的实现类(记得修改里面的内容,qq邮箱以及授权码,如果邮箱授权码不会,可以上网搜搜,很简单)SendEmailServiceImpl.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xsy.service.impl;

import com.xsy.service.SendEmailService;
import org.springframework.stereotype.Service;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
import java.util.Random;
@Service("sendEmail")
public class SendEmailServiceImpl implements SendEmailService {
    public static final String SMTPSERVER = "smtp.qq.com";
    public static final String SMTPPORT = "465";
    public static final String ACCOUT = "自己的qq邮箱";
    public static final String PWD = "邮箱的授权码,不是qq密码";
    @Override
    public int sendEmail(String addr) throws Exception{
        System.out.println("传过来的地址参数"+addr);
        // 创建邮件配置
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", SMTPSERVER); // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.port", SMTPPORT);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
        props.setProperty("mail.smtp.ssl.enable", "true");// 开启ssl
        // 根据邮件配置创建会话,注意session别导错包
        Session session = Session.getDefaultInstance(props);
        // 开启debug模式,可以看到更多详细的输入日志
//        session.setDebug(true);
        Random random = new Random();
        int rannum = (int) (random.nextDouble() * (99999 - 10000 + 1)) + 10000;// 获取5位随机数
        //创建邮件
        MimeMessage message = createEmail(session,addr,rannum);

        //获取传输通道
        Transport transport = session.getTransport();
        transport.connect(SMTPSERVER,ACCOUT, PWD);
        //连接,并发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        System.out.println("返回的验证码数据"+rannum);
        return rannum;
    }
    public MimeMessage createEmail(Session session,String ad,int num) throws Exception {
        // 根据会话创建邮件
        MimeMessage msg = new MimeMessage(session);
        // address邮件地址, personal邮件昵称, charset编码方式
        InternetAddress fromAddress = new InternetAddress(ACCOUT,
                "橙子商城", "utf-8");
        // 设置发送邮件方
        msg.setFrom(fromAddress);
        InternetAddress receiveAddress = new InternetAddress(
                ad, "test", "utf-8");
        // 设置邮件接收方
        msg.setRecipient(Message.RecipientType.TO, receiveAddress);
        // 设置邮件标题
        msg.setSubject("橙子商城", "utf-8");

        msg.setText("注册验证码为:"+num);
        // 设置显示的发件时间
        msg.setSentDate(new Date());
        // 保存设置
        msg.saveChanges();
        return msg;
    }
}

4、在controller包下创建一个控制类UtilsController.java,用来测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xsy.controller;

import com.xsy.bean.Msg;
import com.xsy.service.SendEmailService;
import com.xsy.service.UpImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
@RestController
@RequestMapping("/utils")
public class UtilsController {
    @Autowired
    private SendEmailService sendEmailService;
    @Autowired
    private UpImageService upImageService;
    //发送邮箱验证码
    @RequestMapping(value = "/sendEmail",method = RequestMethod.GET)
    public Msg sendEmail() throws Exception{
        int num=sendEmailService.sendEmail("1035336407@qq.com");
        System.out.println("验证码"+num);
        return Msg.success().add("checkCode",num);
    }
}

5、运行,访问

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java实现发送邮件功能
电子邮件开发在后台中是普遍存在的现象和功能,比如用户注册,系统自动发送一封电子邮件到用户邮箱;再比如密码找回,系统会自动把密码发送到用户邮箱;…等等,所以作为一名java程序员,还是有必要学会这项技能的。
全栈程序员站长
2022/08/27
9720
java实现发送邮件功能
Java发送邮件工具类
这是从根据从码云上找到的一个邮件发送开源项目进行了一定的修改后 这里用的是Spring Boot项目进行的测试 项目结构: pom文件需要引入以下三个jar包: <dependency
二十三年蝉
2018/04/10
2.9K0
Java发送邮件工具类
Java-工具类之发送邮件
代码已托管到 https://github.com/yangshangwei/commonUtils
小小工匠
2021/08/17
1.7K0
javaMail发送邮件随笔
1:javax.mail.NoSuchProviderException: No provider for smpt
一觉睡到小时候
2019/07/03
7430
javaMail发送邮件随笔
Java发送邮件工具类
发送邮箱需要去开启 POP3/SMTP服务, 下面所有的密码都是授权码!!!! qq邮箱的设置在QQ邮箱-->设置-->账号-->进行设置
全栈程序员站长
2022/08/28
6790
Java发送邮件工具类
基于SMTP协议的邮件发送功能JavaEE实现
本博客介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱
SmileNicky
2019/01/17
7550
邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
该文章介绍了如何通过JavaMailSender发送邮件,并附带上图片和附件。同时,介绍了MailReceiver实现接收邮件。
IT可乐
2018/01/04
3.5K0
邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
Java常用工具类之发送邮件
package com.csice.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingE
二十三年蝉
2018/02/28
1.5K0
利用java实现发送邮件
电子邮件的应用非常广泛,常见的如在某网站注册了一个账户,自动发送一封激活邮件,通过邮件找回密码,自动批量发送活动信息等。很显然这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。
全栈程序员站长
2022/08/28
1.5K0
利用java实现发送邮件
Java使用QQ邮箱给其他邮箱发邮件
个人微信小程序可以扫码体验 引入了2个jar包 <!-- mail --> <dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId> <version>1.5.5</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <art
小帅丶
2018/02/08
4.1K0
Java使用QQ邮箱给其他邮箱发邮件
SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
(1)、Message 类: javax.mail.Message 类是创建和解析邮件的一个抽象类 子类javax.mail.internet.MimeMessage :表示一份电子邮件。 发送邮件时,首先创建出封装了邮件数据的 Message 对象, 然后把这个对象传递给邮件发送Transport 类,执行发送。 接收邮件时,把接收到的邮件数据封装在Message 类的实例中,从这个对象中解析收到的邮件数据。
知了一笑
2019/07/19
1.9K0
基于JavaMail的Java邮件发送:简单快速上手
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。
陶然同学
2023/02/27
1.1K0
基于JavaMail的Java邮件发送:简单快速上手
java邮件开发
(重点)SMTP:发送邮件的协议。Simple Message Transfer Protocal。默认端口:25
HUC思梦
2020/09/03
1.7K0
java邮件开发
车辆违章查询和限行提醒程序 -- (2) Java实现发送邮件
下面我们介绍如何用Java发送邮件,综合网上资料我制作了一篇肥肠简单的教程,只要把邮箱密码和接收者邮箱账户替换成你需要的即可!!!当然,发送邮件虽然没有成本,但是不如发短信提醒用户来的直接,而且同一个IP和账户发送邮件太多的话,邮件会被识别成为垃圾邮件,用户还得去垃圾箱里面才能看见我们发的邮件,算是有利有弊吧。
浩Coding
2019/07/03
1.2K0
Java Mail(二):JavaMail介绍及发送一封简单邮件
JavaMail是SUN提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。虽然JavaMail(仅支持JDK4及以上)也是Java的API之一,但是却没有直接加入到JDK中,所以我们需要另
高爽
2018/01/15
1.7K0
Java Mail(二):JavaMail介绍及发送一封简单邮件
java中使用自己的邮箱进行多人邮件发送
email.properties文件如下: host=smtp.qq.com //这是qq邮箱,如果是其他邮箱 服务要配置成相应的host user=自己邮箱名 pwd=邮箱密码 subject=主题 1:167359230@qq.com //发送人 2:17655858721@qq.com import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream;
用户5166556
2019/04/16
1K0
JavaMail-发送一封简单邮件(附带附件)
以上的工具类有个进行了重载的方法,因为对于没有附件的邮件和有附件的邮件,在构造邮件对象时是不一样的,有附件的邮件会稍微复杂一点。接着是测试类。
雨临Lewis
2022/01/11
4720
JavaMail 邮件发送,有意思的附件名乱码 → 客户端正常,web端乱码
  基于 JavaMail 1.5.5 ,实现了邮件发送功能,也对接了一些客户,没出现什么问题
青石路
2023/03/09
2.8K0
JavaMail 邮件发送,有意思的附件名乱码 → 客户端正常,web端乱码
Java发送邮件案例
在日常开发中,有时会遇到向用户发送邮件的场景,例如发送注册验证码(现在基本都是发手机验证码了)、邀请链接,有时也会遇到发送带附件的邮件等业务场景。本案例以Java发送邮件为例对这些功能做一整理,希望能够对大家有所帮助。
小诸葛
2020/04/14
1.2K0
Java发送邮件案例
Java 发送邮件的几种方式[通俗易懂]
发送文件的项目地址(free):https://download.csdn.net/download/qq_36474549/10741073
全栈程序员站长
2022/08/28
1.4K0
推荐阅读
相关推荐
java实现发送邮件功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验