springboot实现邮箱简单内容发送(可以自己进行邮箱维护并发送多个人员)

6 篇文章 1 订阅

一、pom.xml

<dependencies>
	<!-- springboot的所需要的包配置 -->
	
	<!-- 关键 springboot集成email发送依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
</dependencies>

二、配置yml文件(这一步仅是为了能使email这个包生效,发送的邮箱可以根据下面的实现方法自行调整)
1、QQ邮箱配置(支持SSL安全发送):

#邮箱配置
spring:
  mail:
    default-encoding: UTF-8
    host: smtp.qq.com
    username: 邮箱
    password: 授权码
    # 端口号465或587,但是经过我的测试,发现只有587能用
    port: 587
    # 使用SSL方式
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory

2、163邮箱配置(支持SSL安全发送):

spring:
  mail:
    default-encoding: UTF-8
    host: smtp.163.com
    username: 邮箱
    password: 授权码
    # 端口号465或944,但是经过我的测试,发现两个都能用
    port: 944
    # 使用SSL方式
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory

qq邮箱和163邮箱授权码跟端口如何获取跟查看,请看本文章最后的参考链接

三、实现代码(Controller层)

public JavaMailSenderImpl getJavaMailSender(Map<String,Object> map) {
        // 邮件发送者
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost(map.get("EMAILTYPE").toString());
        //5、SMTP服务器: 默认端口 163邮箱与qq邮箱端口不一样
        if (map.get("EMAILTYPE").toString().equals("smtp.163.com")){
            javaMailSender.setPort(25);
        }else if (map.get("EMAILTYPE").toString().equals("smtp.qq.com")){
            javaMailSender.setPort(587);
        }

        //6、//发送邮件协议名称
        javaMailSender.setProtocol("smtp");
        //7、编码格式
        javaMailSender.setDefaultEncoding("UTF-8");
        javaMailSender.setUsername(map.get("EMAILURL").toString());
        javaMailSender.setPassword(map.get("EMAILPWD").toString());
        //8、创建连接对象,连接到邮箱服务器
        Properties properties = new Properties();
        //发送服务器需要身份验证,要采用指定用户名密码的方式去认证
        properties.put("mail.smtp.auth", true);
        properties.put("mail.smtp.starttls.enable", true);
        //9、添加连接对象到邮件对象中
        javaMailSender.setJavaMailProperties(properties);
        return javaMailSender;
    }

    //声明一个Message对象(代表一封邮件),从session中创建
    private MimeMessage getMimeMessage(String username, String toEmail, String subject, String text, JavaMailSenderImpl javaMailSender) throws MessagingException {

        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        //发件人
        mimeMessageHelper.setFrom(username);
        //收件人  : 可以发送给多个收件人,该方法有一个重载的 数组形参
        mimeMessageHelper.setTo(toEmail);
        //邮件主题
        mimeMessageHelper.setSubject(subject);
        //邮件内容
        mimeMessageHelper.setText(text, true);

        return mimeMessage;
    }

    @RequestMapping("/sendMail")
    @ResponseBody
    public Map<String,Object> sendMail(HttpServletRequest request, HttpServletResponse response) throws Exception{
        Map<String,Object> mapOut = new HashMap<>();
        //获取参数 我这里是封装好的方法,请按自己的方法修改
        Map<String, Object> mapArgu = CFunc.PackArguToMap(request, response);
        //从数据库中取得邮箱  这里不多展示  自己写死邮箱都可以
        Map<String,Object> email = firstTrialService.getEmailDetail();
        if (email==null){
            mapOut.put("status","error");
            mapOut.put("message","发件邮箱不存在,请进行维护");
            return mapOut;
        }
        String username = email.get("EMAILURL").toString();
        
        
        String toEmail = "发送邮箱的email";
        
        String subject = "标题";
        String text = "内容";
        

        //发送邮件
        JavaMailSenderImpl javaMailSender = getJavaMailSender(email);
        MimeMessage mimeMessage = getMimeMessage(username, toEmail, subject, text, javaMailSender);
        javaMailSender.send(mimeMessage);

        mapOut.put("status","ok");
        return mapOut;
    }

参考链接:
https://blog.csdn.net/qq_42449963/article/details/123285035
https://www.csdn.net/tags/OtDaUg2sMjA3MzYtYmxvZwO0O0OO0O0O.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于SpringBoot+vue实现的实验室管理系统源码+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+vue实现的实验室管理系统源码+项目说明.zip # springboot-LAB #### 介绍 实验室管理系统,无框架,spring boot #### 软件架构 :某学校拟开发一套实验室助理工作管理系统,实现实验室助理工作信息的 管理。需求描述如下:第 3 页 共 4 页 (1)学校实验室分为公共基础实验室和专业技术实验室,专业技术实验室由各二 级学院负责管理,公共基础实验室由教务处负责管理。一个部门有多名实验技术员, 一名实验技术员只属于一个部门,实验技术员可以管理多个实验室,但是一个实验 室只有一名实验技术员。 (2)实验技术员先填写实验室助理招聘计划并提交到学生工作处审核,学生工作 处审核过程中可以修改招聘人数,招聘计划信息包括招聘计划编号、计划名称、岗 位要求、招聘人数、申请部门、申请人等。 (3)学生在线应聘实验助理岗位需要先注册成为系统用户,注册用户信息包括学 号、密码、姓名、专业、学院、班级、年级、手机号、邮箱、个人照片。 (4)学生注册用户成功并登录系统后,可以在线查看实验室助理招聘计划信息和 填写报名信息。报名信息包括报名编号、岗位名称、技能描述、申请人、申请时间 等。每个学生只能应聘一个岗位,如果应聘的人数超过岗位招聘人数,系统拒绝报 名请求。 (5)实验技术员可以查看应聘本实验室助理岗位的报名信息并筛选进入面试环节 的人员名单。学生可以在线查看自己是否进入面试环节。面试结束后,实验技术员 录入面试结果并建立录用人员的档案信息,录入人员档案信息包括人员编号、学号、 密码、姓名、专业、学院、班级、年级、手机号、邮箱、个人照片,所属实验室等。 学生可以查看面试结果。 (6)实验室助理可以记录每天工作内容,工作内容包括安全卫生检查情况和设备 运行情况。工作内容信息包括周次、时间(年/月/日)、星期、人员编号、工作内 容、系统时间。实验技术员可以按日期查询实验室助理的工作内容。实验室助理可 以在线填写实验教学仪器设备维修申请,申请信息包括设备名称、设备编号、型号、 故障现象描述、报修时间、报修人。实验室技术员可以查看本实验室的设备维修申 请并导出实验教学仪器设备维修申报表 #### 安装教程 1. IDE运行 2. 修改数据库密码账号 #### 运行效果 ![ ](https://images.gitee.com/uploads/images/2021/0627/161255_1cfe664a_5479964.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0627/161315_4ee44041_5479964.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0627/161324_a2388a71_5479964.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0627/161332_fd056a3c_5479964.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0627/161346_e7c167a8_5479964.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0627/161409_9c9487ae_5479964.png "屏幕截图.png")
基于springboot+vue的位置多分馆图书馆推荐系统 JavaSpringBoot,MySQL,Vue 用户端 点击进入网站,在上方展示了鞋类图书馆网站的所有功能模块,右侧为新用户注册以及用户登录的入口,点击从下方弹出输入框。 首页:在登录成功进入之后,来到网站首页,在首页中,展示了本鞋类图书馆网站的购物主题,背景模块以及文字的选择均是完全的贴合鞋类图书的主题,给用户给予一种轻松愉快的感觉。在上方分两个模块展示,分别为图书分类与个人中心,点击个人中心,可基于首页下拉进入地址管理、订单列表、购物车管理、我喜欢的以及退出购物网站。 (1)图书分类:在图书分类模块中,展示了所有的图书列表,故可以根据用户自己的喜好去查询选择喜爱的图书。将光标定位在图书的图片上方,可以点击查看图书详情,并且在图书展示框下方显示了图书的相关信息,包括图书的具体介绍以及价格等等,点击图片即可跳转至图书的详情页,进行加入购物车进行购买,即输入所要购买的图书数量。同时也可以通过此页面跳转到首页。 (2)地址管理:在地址管理模块中,展示了用户所有的地址信息,每一天地址信息包括详细地址,电话号码,收货人姓名以及邮政编码,在详细信息的上方设置了添加地址模块,点击添加,以浮动模块跳转出来,输入相关信息,即可添加成功,并且,用户也可以对地址进行移除和编辑操作,是用户可以对地址信息进行及时更新以及进行更好的维护管理。 (3)订单管理:在订单管理中,用每下单成功之后产生一张订单号,便于用户进行关注图书的派送情况。在图书单号的下方可以进行图书评价功能,用户可以充分的去表达自己的看法。 (4)购物车管理:在购物车管理模块中,将展示了所有用户喜爱的图书信息,包括图片、图书名字、数量、单价以及图书的总价,用户也可点击“移除”按钮,根据用户自己的需求去留下自己的最终要购买的图书。在图书信息下方对所要支付的全部金额进行总计,点击去下单,将跳转到支付界面,在支付界面中,用户可以对地址再一次的进行选择,并且选择支付方式,包括有微信支付、支付宝支付以及货到付款三种方式,为了确保图书购买的正确性,下方还设置了确认图书信息模块,包括图书的图片,以及数量和总计价格。为广大用户提供安全、及时,精准的图书购买服务。 (5)我喜欢的:在我喜欢的中,将展示用户在选择图书以及对图书进行查看时根据自己的喜好将图书添加至我的喜爱列表,列表栏目里展示的信息有图片以及图书名称,同时用户也可以将其移除我喜欢的图书列表。 后台管理网站 管理员登陆:进入网站,将跳出鞋类图书馆网站后台管理员登录的界面,然后管理员通过输入账户名以及密码进行登录。 系统管理员: (1)系统管理:在系统管理中,展示了在此鞋类图书馆中所注册的用户数量、在图书馆中所有上架的图书数量,以及成功下单的所有单数,是管理员对整个图书馆的受喜爱程度进行合理的估计以及制定后续的一个发展方向。 (2)会员管理:会员管理中的数据来源为登录该鞋类图书网站的用户数据,网站中的用户登录进入平台之后,可跳转回去完善信息,完善的信息会展示在用户信息中,在会员信息中,管理员可以查看用户的名称,邮箱,同时管理员还可以对用户的数据进行删除操作。 (3)栏目管理:在栏目管理中,会将所有的鞋类图书所属的类型,比如男士皮鞋系列图书、女士单鞋系列以及女士高跟鞋系列的图书以分栏目的形式展示给所有用户,并且管理员有权对其进行添加编辑与删除操作,对其进行更好的管理操作。 (4)图书管理:在图书管理中,将展示所属系列的所有图书信息,包括信息标题、销售价格以及现有的库存量,同时管理员可对其进行编辑以及删除操作,并且在上方可以点击添加按钮,来进行图书的具体信息添加,从而达到对其进行更好的管理操作。 (5)评价管理:在评价管理中,用户在对自己所购买的图书输入总计的总体评价之后,管理员可以对其评价内容进行相应的操作管理,评价的内容包括评价时间以及评价的星级级别。然后可以对数据进行删除。 (6)订单管理:在订单管理模块中,能够对所有用户在鞋子图书馆所购买的图书订单进行管理,包括图书的总计价格、地址、图书名称以及下单的日期。
Spring Boot 中,实现邮箱的群发和发送多个附件可以使用 JavaMail API。下面是一个简单的示例代码: ```java import java.io.File; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; public class EmailService { private String host; // SMTP服务器主机名 private String username; // 发件人账号 private String password; // 发件人密码 public EmailService(String host, String username, String password) { this.host = host; this.username = username; this.password = password; } public void sendEmail(String[] to, String[] cc, String[] bcc, String subject, String content, String[] attachments) throws Exception { Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); Authenticator auth = new EmailAuthenticator(username, password); Session mailSession = Session.getInstance(props, auth); MimeMessage message = new MimeMessage(mailSession); message.setFrom(new InternetAddress(username)); InternetAddress[] toAddresses = new InternetAddress[to.length]; for (int i = 0; i < to.length; i++) { toAddresses[i] = new InternetAddress(to[i]); } message.setRecipients(Message.RecipientType.TO, toAddresses); if (cc != null && cc.length > 0) { InternetAddress[] ccAddresses = new InternetAddress[cc.length]; for (int i = 0; i < cc.length; i++) { ccAddresses[i] = new InternetAddress(cc[i]); } message.setRecipients(Message.RecipientType.CC, ccAddresses); } if (bcc != null && bcc.length > 0) { InternetAddress[] bccAddresses = new InternetAddress[bcc.length]; for (int i = 0; i < bcc.length; i++) { bccAddresses[i] = new InternetAddress(bcc[i]); } message.setRecipients(Message.RecipientType.BCC, bccAddresses); } message.setSubject(subject); MimeMultipart contentPart = new MimeMultipart(); MimeBodyPart textPart = new MimeBodyPart(); textPart.setText(content); contentPart.addBodyPart(textPart); if (attachments != null && attachments.length > 0) { for (String attachment : attachments) { MimeBodyPart attachPart = new MimeBodyPart(); File file = new File(attachment); attachPart.attachFile(file); attachPart.setFileName(MimeUtility.encodeText(file.getName())); contentPart.addBodyPart(attachPart); } } message.setContent(contentPart); Transport.send(message); } private static class EmailAuthenticator extends Authenticator { private String username; private String password; public EmailAuthenticator(String username, String password) { this.username = username; this.password = password; } @Override protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(username, password); } } } ``` 然后就可以在你的代码中使用这个 EmailService 类来发送邮件了: ```java EmailService emailService = new EmailService("smtp.example.com", "[email protected]", "password"); String[] to = {"[email protected]", "[email protected]"}; String[] cc = {"[email protected]", "[email protected]"}; String[] bcc = {"[email protected]", "[email protected]"}; String subject = "Test email"; String content = "This is a test email."; String[] attachments = {"/path/to/attachment1", "/path/to/attachment2"}; emailService.sendEmail(to, cc, bcc, subject, content, attachments); ``` 其中,`to`、`cc`、`bcc` 分别表示邮件的收件人、抄送人、密送人,`subject` 表示邮件主题,`content` 表示邮件内容,`attachments` 表示邮件的附件路径数组。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值