「SpringBoot实战」实现发送邮件API/发件人中文别名

「SpringBoot实战」实现发送邮件API/发件人中文别名

前言

由于价格监控项目的需求,实现了一个小的邮件发送接口服务,使用了一个单独的SpringBoot项目,给他取名为spring-mail-sender,开源在了Github上。内部我给他命名为提醒服务,因为未来希望还能扩展下,用来做短信发送服务,或者安卓等推送服务的API。

简介

本项目使用springboot,采用web api的方式提供邮件,短信等服务的调用接口,目前仅支持邮件提醒。

https://github.com/qqxx6661/spring-mail-sender

邮件提醒特点:

本项目待完成:

项目结构如下:

├─main
│ ├─java
│ │ └─com
│ │ └─demo
│ │ └─springmailsender
│ │ │ SpringMailSenderApplication.java
│ │ │ SwaggerConfig.java
│ │ │
│ │ ├─domain
│ │ │ EmailRequest.java
│ │ │ ResponseData.java
│ │ │
│ │ ├─service
│ │ │ EmailService.java
│ │ │ EmailServiceImpl.java
│ │ │
│ │ └─web
│ │ EmailController.java
│ │
│ └─resources
│ application.properties
│
└─test
 └─java
 └─com
 └─demo
 └─springmailsender
 SpringMailSenderApplicationTests.java

问题解决

发件人无法自定义别名

发现邮件发件人,也就是simpleMailMessage.setFrom只能以用户的邮箱地址作为昵称,发件效果是这样的:

{
 "address": "xxxxx@qq.com",
 "from": "2897788509@qq.com", // 必须和发件邮箱完全一致
 "msg": "string",
 "subject": "string",
 "to": "xxxxxxx@qq.com"
}
「SpringBoot实战」实现发送邮件API/发件人中文别名

image

如果不一致,或者填写了用户别名,就会报如下错误:

「SpringBoot实战」实现发送邮件API/发件人中文别名

image

我就很纳闷,因为之前我用python写了个发送邮件的api,明明是可以别名的啊,于是我打开了python的邮件api,看到如下代码,我将名称编码为了UTF-8:

@staticmethod
 def _format_addr(s):
 # format the email address
 name, addr = parseaddr(s)
 return formataddr((Header(name, 'utf-8').encode(), addr))

随后我又去谷歌了一阵,参考:

https://blog.csdn.net/yiifaa/article/details/78264962

原来想要使用发件人别名,就必须对发件字段进行编码:

严格格式为:别名<邮件地址>

「SpringBoot实战」实现发送邮件API/发件人中文别名

image

然而,网上很多种答案要么引入了new InternetAddress(alias + " <"+from+">"),要么编码为GBK,我最后还是直接编码为UTF-8:

String fromByte = new String((emailRequest.getFrom() + " <" + fromAddress + ">")
 .getBytes("UTF-8"));
 String toByte = new String((emailRequest.getTo() + " <" + emailRequest.getAddress() + ">")
 .getBytes("UTF-8"));
 simpleMailMessage.setFrom(fromByte);
 simpleMailMessage.setTo(toByte);
 simpleMailMessage.setSubject(emailRequest.getSubject());
 simpleMailMessage.setText(emailRequest.getMsg());

大功告成:

「SpringBoot实战」实现发送邮件API/发件人中文别名

image

关注我

我目前是一名后端开发工程师。技术领域主要关注后端开发,数据爬虫,数据安全,5G,物联网等方向。

Github:@qqxx6661

个人博客:

原创博客主要内容

个人公众号:后端技术漫谈

「SpringBoot实战」实现发送邮件API/发件人中文别名

如果文章对你有帮助,不妨收藏起来并转发给您的朋友们~

展开阅读全文

页面更新:2024-03-04

标签:发件人   别名   会报   菜鸟   刀把   爬虫   题解   收件人   技术文章   中文   实战   昵称   接口   错误   邮件   项目   数据   数码

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top