java springboot项目,使用sendgrid提供一个发送邮件的的rest服务

调用一次接口,使用同一个邮箱,给多个地址发送邮件,并且收件人能看到其他收件地址的情况。
tip:如果不想看到其他收件人地址,可根据情况调整后端代码。

一:springboot引入sendgrid依赖

<dependency><groupId>com.sendgrid</groupId><artifactId>sendgrid-java</artifactId><version>4.7.6</version>
</dependency>

二:配置sendgrid参数(如果参数直接在java文件中写死,请忽略)

application.yml文件配置参数

twilio:apikey: xxxxxxxxxxxx  #sendgrid中注册账号是获取的apikeyfromemail: yyyy@qq.com #来源邮箱

然后新建一个配置类,TwilioConfig


@Configuration
@Getter
public class TwilioConfig {@Value("${twilio.apikey}")private String apikey;@Value("${twilio.fromemail}")private String fromEmail;}

三:创建rest接口

rest接口中,参数使用是一个类对象,方便接受多个参数或者数组对象。也可以用@RequestParam接受参数,但是比较麻烦。

@RestController
@Slf4j
public class MessageApi {@Resourceprivate TwilioConfig twilioConfig;//配置类对象@RequestMapping(value = "/message/email", method = RequestMethod.POST)public CommonResult email(@RequestBody EmailParam param) {return null;}
}

然后看一下EmailParam类的参数(这个根据实际情况来定义属性)

@Data
@ToString(callSuper = true)
public class EmailParam implements Serializable {private String mimeType;//类型private String subject;//主题private List<EmailAddressBean> to;//发送邮箱private String content;//内容private List<EmailAttachmentBean> attachment;//附件}

因为需要发给多个地址,且邮件地址有别名,所以用List来接收一个数组对象
(attachment附件内容暂时没测试)


@Data
@ToString(callSuper = true)
public class EmailAddressBean implements Serializable {private String userName;//名称private String address;//地址
}
@Data
@ToString(callSuper = true)
public class EmailAttachmentBean implements Serializable {private String fileName;//类型private String content;//附件的base64编码
}

四:发送邮件的代码

@RequestMapping(value = "/message/email", method = RequestMethod.POST)public CommonResult email(@RequestBody EmailParam param) {log.info("request param is {}", param);//yml文件中配置的from地址Email from = new Email(twilioConfig.getFromEmail());Mail mail = new Mail();//多个地址List<EmailAddressBean> toAddress = param.getTo();/**如果说不需要在一次发送中,发给多个人*或者不想要收件人看到其他的收件人地址,可以修改下面的循环,*让每次循环都执行一次发送请求就好/Personalization personalization = new Personalization();if (toAddress != null && !toAddress.isEmpty()) {for (EmailAddressBean emailAddress : toAddress) {Email to = new Email(emailAddress.getAddress());personalization.addTo(to);personalization.addSubstitution("-name-", emailAddress.getUserName());}}mail.addPersonalization(personalization);//邮件支持html格式的内容,默认发送为textString type = "text/plain";if("html".equals(param.getMimeType())){type = "text/html";}Content content = new Content(type, param.getContent());mail.setFrom(from);//发送邮箱mail.setSubject(param.getSubject());//主题mail.addContent(content);//内容//yml文件中配置的apikeySendGrid sg = new SendGrid(twilioConfig.getApikey());Request request = new Request();try {request.setMethod(Method.POST);request.setEndpoint("mail/send");request.setBody(mail.build());Response response = sg.api(request);} catch (IOException ex) {System.out.println("Exception is :" + ex.getMessage());return CommonResult.failed(ex.getMessage());}return CommonResult.success();}

五:用postman测试一下

tip:postman的下载和使用,网上搜索一下就好,很简单
1 请求方法:POST

2 请求头:Content-Type: application/json


3 请求体:JSON格式

{"mimeType":"html",# html 或者text,前端参数可自定义类型"subject":"测试主题666","content":"<label  style='color: red' >邮件测试内容</label>","to":[{"userName":"xxx","address":"xxx@qq.com"},{"userName":"yyy","address":"yyy@163.com"}]
}

六:邮件

Springboot 使用 sendgrid发送邮件相关推荐

  1. 玩转 SpringBoot 2 之发送邮件篇

    前言 通过本文你将了解到SpringBoot 2 中发送邮件使用教程,具体详细内容如下: 发送普通的邮件 发送html格式邮件 发送html 中带图片的邮件 发送带附件的邮件 阅读前需要你必须了解如何 ...

  2. Azure 上通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...

  3. Springboot企业邮箱发送邮件

    1.这里以腾讯企业邮箱为例 2.首先确定springboot版本,目前使用1.5.7, 3.添加邮件依赖 <dependency><groupId>org.springfram ...

  4. SpringBoot使用JavaMailSender发送邮件:com.sun.mail.smtp.SMTPSendFailedException: 451 MI:SFQ 163 smtp7

    SpringBoot使用JavaMailSender发送邮件时,报错如下: 2020-08-08 07:32:21,237 ERROR --- [http-nio-8080-exec-1] cn.co ...

  5. 轻松发送邮件! springboot,sendgrid和greenmail

    这是使用sendgrid电子邮件提供商的api的简短演示. **克隆github存储库以获得更多详细信息! ** 我正在通过sendgrid Java客户端和在springboot制成的微服务中使用此 ...

  6. spring boot 邮件端口_不会吧,SpringBoot还能发送邮件发送邮件?快来看看如何操作吧

    前言 实现发送邮件功能主要有以下几步 引入依赖spring-boot-start-mail用SpringBoot 自动配置MailSenderAutoConfiguration定义MailProper ...

  7. Springboot整合ActiveMQ发送邮件

    虽然ActiveMQ以被其他MQ所替代,但仍有学习的意义,本文采用邮件发送的例子展示ActiveMQ 文章目录 1. 生产者 1.1 引入maven依赖 1.2 application.yml配置 1 ...

  8. python利用flask_mail、sendgrid发送邮件

    在学习Flask,看的书籍是<Flask Web开发实战 入门.进阶与原理解析>.在学习发送电子邮件这一章节时,遇到一些问题,便写下这一篇文章,记录一下,也希望遇到同样问题的人能够花较少时 ...

  9. 在SpringBoot中添加发送邮件功能

    1.第一步首先引入坐标 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter- ...

最新文章

  1. @ImportResource SpringBoot使用xml配置Bean
  2. 1、时间、FHS 学习笔记
  3. 用STL给C++充电:第一部分
  4. python3 try语句相关 (try/except/else/finally)
  5. tyvj1305 最大子序和 【单调队列优化dp】
  6. SharePoint PowerShell命令系列 (9) New-SPWeb
  7. YGC前后新生代变大?
  8. 搭建hypervisor类型为VMWare的cloudstack环境
  9. 数据库方面的操作示例
  10. ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11
  11. Mol. Biol. Evol. | 中科院动物所揭示石山叶猴适应喀斯特环境的遗传机制
  12. hikari数据源配置类_SpringBoot多数据源配置详解
  13. 快速迁移数据中心:华为云数据库SQL Server实践案例技术解析
  14. 怎么监听Android软键盘的打开和关闭
  15. java窗口三栏布局_移动端的flex三栏布局的相关知识介绍(代码示例)
  16. SQL SERVER导入EXCEL文件:无法创建链接服务器 (null) 的 OLE DB 访问接口 Microsoft.Ace.OLEDB.12.0 的实例。...
  17. 批量梯度下降,随机梯度下降和小批量梯度下降的区别
  18. R.I.P. Alan Turing(旧文搬运15.6.6)
  19. 倍福软件安装及注意事项
  20. 【开源】Java身份证号码识别系统

热门文章

  1. 系统集成实训 (*旸老师实训)
  2. wordpress mysql 密码重置_WordPress登录密码找回办法之修改数据库篇 | Wopus
  3. 预训练综述 Pre-trained Models for Natural Language Processing: A Survey 阅读笔记
  4. 神州租车还有这些新玩法?打造了行业新标杆
  5. 两台win10电脑连接同一个wifi怎么共享文件
  6. 如何更换荣耀MagicBook Pro开机启动logo
  7. textarea 相关设置
  8. 『数据分析』使用python进行同期群分析
  9. 微信小程序生成(painter)海报
  10. 核典型关联分析(KCCA)算法原理