java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况
java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况

邮件短信微服务 spring boot 微服务 接收json格式参数 验证参数合法化 放入队列 返回json 内网访问,IP白名单限制 activemq消息队列 独立部署到docker里 邮件发送 从activeMQ里取待发送邮件 根据邮箱类型选择对应服务商接口发送 mysubmail 主账号邮件验证码类无限额(需要找客服技术申请开通) 子账号营销邮件 TLS加密需要找技术加上 sendcloud sendgril amazon SES 每天5万,每秒14封 国内邮箱白名单配置(foxmail,qq,163,126,yeah,sina,sohu,189,139) 失败重发5次丢弃 暂停5秒再放回队列 放回队列需要切换不同运营商发送才能保证比较高的成功率,失败后放回队列指定其他运营商改成下面顺序:submail->sendclound->amazonses->sendgrid->submail
需要保证各个运营商有比较充足的余额效果才比较好 验证码实时性比到达率重要,超过2分钟收不到就没意义了 失败后直接放回队列里重发,邮件少的话马上就给取出来重发了,短时间内连续重发可能会被邮件服务器判断为垃圾邮件拒绝 根据邮件服务器返回状态作出相应处理 推广邮件用户退订,记录后不继续推广 短信发送 从activeMQ里取待发送短信 没有指定运营商,默认+86用submail,其他用twilio,指定submail的再判断国内国际的分开发送 根据号码类型选择对应服务商接口发送 mysubmail 1: message/send 接口,优点:方便、快速对接使用,免模板,可直接提交任意内容(需要符合短信发送规范,短信签名前置),缺点:并发效率不高,适用于并发小,内容变动或模板变动较多的场景(并发效率低指高于每秒1000的并发,低于这个并发需求请无视) 2:message/xsend 接口,优点:高稳定性,低延迟,高并发,适用验证码类要求低延迟,高请求效率的场景,缺点:接入时需要提前创建模板,并指定模板ID 可以先使用send接口发送后自动创建模版,后面再换成自动生成的模版用xsend来发送 需要判断有+86的走国内短信API,其他国家代码走国际短信API
就这2种判断就可以了,国际短信API可以发送除中国以外的235个国家的短信
国外的是区号必须加的,不然无法判断国家
国内的不能带上+86,否则会报错,需要去掉+86
先加一个国内号码的合法性验证,国外的后续再慢慢加上正则表达式规则 国际短信 不强制传【】,国内是运营商强制要求的,必须传【】而且【xxx】需要放在开头那里 sendcloud 必须先创建签名、模版,而且最多创建5个,需要传签名,、模版ID才能发送,已决定放弃 twilio sms 发送到国内手机号到达率比较低 amazon sms(待开通) 阿里短信(待申请) 失败重发5次丢弃 失败的改成另外一个运营商再放到队列里 根据短信服务器返回状态作出相应处理
邮件服务调研:

邮件服务 需要解决问题 QQ,foxmail收不到sendgril邮件 腾讯邮箱白名单服务要求很严格,区块链的申请不了 区分国内外邮箱进行分别处理 对邮件进行分类处理,重要的验证码、订单通知用一个域名多个帐号,广告推送的用另外一个域名多个帐号 对邮件发送进行轻量级队列化,失败后放回队列重发 解决方案 注册域名备案 aax-pro.com aax-pro.cn 都可以注册,两个一起一年84元
aax-intl.com 也可以,一年58元 域名备案后使用网易企业邮箱服务 使用sendcloud作为备用 使用mysubmail作为备用 使用Gmail企业邮箱发送 放到aws或香港同事电脑上测试 火币发送邮件 火币至少用了6个不一样的邮箱帐号发送不同类型的通知 订单、重置密码:noreply@mail.huobi.pro
安全验证:noreply@mail.huobipro.com
邮箱验证:service2@huobi.com
推广服务通知:support3@huobi.com,service3@huobi.com,vip@huobi.com 网易企业邮箱 每个账号一天最多发1000封,发送频率每15分钟不得超过500封 单次群发不宜超过200个收件人,100个收件人效果最佳 可以使用多个邮箱发送,用户数可以随时增加的 我想购买 200个用户,标准价:44400元/年; 优惠价:29600元/年
我想购买 100个用户,标准价:22500元/年; 优惠价:15000元/年
我想购买 10个用户,标准价:2925元/年; 优惠价:1950元/年
我想购买 20个用户,标准价:5550元/年; 优惠价:3700元/年
https://qiye.163.com/entry/buy-price.htm 国家工信部要求,邮箱域名需要进行备案
如果不备案,不排除域名提供商会响应工信部要求将没有备案的域名进行清理,一般主要体现为清理域名解析。
若没了解析,则会影响到您的邮箱正常收取外域邮件,以及无法正常登录mail.域名。
海外注册用户建议联系国内域名服务商购买域名空间进行备案。 腾讯企业邮箱 https://exmail.qq.com 免费版,50人帐号上限
100个用户,标准价:14000元/年,免费赠送自选域名 出错原因:该服务器IP的发信频率大幅度超过QQ邮箱限制。
QQ邮箱对来自相同IP的外部发信服务器有一定的频率限制:
1、超过每分钟发信量限制,此IP地址被禁止发信若干分钟。
2、超过每小时发信量限制,此IP地址被禁止发信若干小时。
3、超过每日发信量限制,此IP地址本日内禁止再发信。
4、以上频率限制数值属于QQ邮箱保密数据,恕不公开。 国内代发邮件服务 mysubmail SUBMAIL_赛邮云通信_短信平台_邮件平台_语音验证码_国际短信
https://www.mysubmail.com/ 邮件分行业短信通道,营销通道两种,收费和到达率不一样
邮件费用比sendcloud贵点,短信费用比sendcloud便宜 50万封以上的邮件资源包均享有 6 个月的独立 IP 服务 10万封¥720单价7.2元/千封
50万封¥3000单价6元/千封
200万封¥11000单价5.5元/千封
500万封¥22500单价4.5元/千封 有SUBHOOK邮件和短信 API 事件推送通知接口 SMTP - 开发者文档 - SUBMAIL - 赛邮云通信
https://www.mysubmail.com/chs/documents/developer/AJhT63 事务类短信资源包:1万条390元,5万条1850元,10万条3500元,300万条90000元(0.03每条)
运营类短信资源包:1万条420元,5万条2000元,10万条3800元,300万条99000元(0.033每条)
国际短信:美国0.055元/条,英国0.275元/条,日本0.334元/条,法国0.371元/条,澳大利亚0.269元/条 Sendcloud 搜狐集团旗下子公司,2014年从搜狐集团中独立,专注于解决企业触达用户的需求,为企业提供邮件、短信、语音通讯等SaaS服务
https://www.sendcloud.net 保证其硬退比例不超过单次发送总量的5% SendCloud 为你多样化。策略化的发送方案,让发信频率稳定可控。提供的DKIM签名、SPF、白名单确认等措施,更让邮件高效入箱。 月发送量10000封以内¥59/每月
月发送量10001-50000封部分¥5.6/千封
月发送量50001-100000封部分¥5.3/千封
月发送量100001-200000封部分¥5/千封
月发送量200000封以上¥4/千封 企业账户初始发信额度每天3000 正式认证是需要审核网站信息的,上线了才能使用 域名跟客服确定了可以不用备案的 htt http://www.magicwinmail.com/register.php 标准版 永久使用、标准功能、含一年的技术服务和升级; 不限邮箱数许可标准版 12000.00 白金版 永久使用、完备功能、含永久的技术服务和升级; 不限邮箱数许可白金版 25000.00 Winmail 邮件服务器软件 :: 版本功能区别
http://www.magicwinmail.com/edition.php 华美科技,域名需自备不提供域名 只提供软件和技术服务,需要自己搭建邮件服务器 国外邮件服务 sendgril gmail amazon SES
java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况的更多相关文章
- SpringBoot整合阿里短信服务
导读 由于最近手头上需要做个Message Gateway,涉及到:邮件(点我直达).短信.公众号(点我直达)等推送功能,网上学习下,整理下来以备以后使用. 步骤 点我直达 登录短信服务控制台 点我直 ...
- 重构客户注册-基于ActiveMQ实现短信验证码生产者
重构目标:将bos_fore项目中的CustomerAction作为短信消息生产者,将消息发给ActiveMQ,创建一个单独的SMS项目,作为短信息的消费者,从ActiveMQ获取短信消息,调用第三方 ...
- 自定义smokeping告警(邮件+短信)
前段时间接到公司IT同事需求,帮助其配置smokeping的告警功能,之前配置的姿势有些问题,告警有些问题,现在调试OK,在此将关键配置点简单记录下. 关键的配置项主要有: 定义告警规则并配置将告警信 ...
- Java 实现手机发送短信验证码
Java 实现手机发送短信验证码 采用引入第三方工具的方式,网上查了半天,发现简单的实现方式便是注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,彩信 ,之后想要在使用就得花钱了.简单的操作 ...
- Java调用阿里云短信通道服务【千锋】
这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...
- 零基础大数据入门教程:Java调用阿里云短信通道服务
这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...
- 移动端获取短信验证码java实现——阿里云短信服务
需求:移动端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短信 ...
- 浏览器端获取短信验证码java实现——阿里云短信服务
需求:浏览器端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短 ...
- java实现阿里云短信服务发送验证码
由于做项目的时候遇到了接第三方短信服务,所以记录一下. 一.新建一个maven项目并导入相关依赖 <!--手机发送短信验证码--> <dependency> <group ...
随机推荐
- (4.21)sql server中复制查询结果集
在查询结果窗口中复制列标题似乎是一项简单的任务,但对于业余爱好者来说,这可能是一场噩梦. 没有可见的指令/链接/按钮,其中一个可以使用列标题单击和复制所选数据.让我们看看如何在SQL Server M ...
- MySQL复制异常大扫盲:快速溯源与排查错误全解
MySQL复制异常大扫盲:快速溯源与排查错误全解https://mp.weixin.qq.com/s/0Ic8BnUokyOj7m1YOrk1tA 作者介绍王松磊,现任职于UCloud,从事MySQL ...
- Lint——Android SDK提供的静态代码扫描工具
Lint和FindBugs一样,都是静态代码扫描工具,区别在于它是Android SDK提供的,会检查Android项目源文件的正确性.安全性.性能.可用性等潜在的bug并优化改进. 下图简单地描述了 ...
- Delphi窗体置顶及失去焦点后取得焦点
unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶 procedure SetXwForegr ...
- Windos上生成密钥,以及添加到GIT
1.下载git //进入官网下载git; https://git-scm.com/download/win 2.配置本地信息 git config --g user.name "wbiokr ...
- vue中keep_alive使用
总结:keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM.结合vue-router中使用,可以缓存某个view的整个内容. 1.在App.vue中添加配 ...
- [django]django权限简单实验
djagno https://www.jianshu.com/p/01126437e8a4 开始我一直没明白内置的view_car 怎么实现view 只读库的. 后来发现这个api需要在views.p ...
- background-size的兼容性
做响应式布局的时候,如果有背景图,我们当然希望他能够全屏100%显示,这样显得页面非常的爆满,不过这又出现了一个问题,图片的尺寸多大合适呢,现在的浏览器分辨率参差不齐,对于Firefox等高级的浏览器 ...
- Go包管理工具Vendor使用
一.Go包管理工具Vendor 一.使用步骤 1.首先,从go get -u github.com/kardianos/govendor下载govendor工具到本地. 2.govendor使用时,必 ...
- Django-认证系统
一.Django实现cookie与session 一.Django实现的cookie 1.获取cookie request.COOKIES['key'] request.get_signed_cook ...