如何在React.js/Express.js中向用户输入的邮箱地址发送邮件
无需索要用户邮箱密码的动态收件人发信实现方案
- 方案一:接入第三方邮件发送服务的服务端API
你可以选用SendGrid、Mailgun、国内的阿里云邮件推送、腾讯云邮件推送这类商用邮件发送服务,所有发信逻辑在你的服务侧完成:- 仅需要你自己在对应服务商平台注册账号、申请发信凭证,全程不需要索要用户的个人邮箱密码
- 调用API时可以动态传入用户输入的任意收件人地址、邮件主题、正文内容,不需要提前固定收信对象
- 这类服务普遍自带送达率优化、退信统计、垃圾邮件拦截预警功能,比个人邮箱发信的到达率更高
- 方案二:调用mailto协议唤起用户本地邮件客户端
如果你的应用是Web端或移动端,不需要留存发信记录的前提下可以直接用这个零成本方案:- Web端代码示例:
window.location.href = 'mailto:' + 用户输入的收件人地址 + '?subject=' + encodeURIComponent(自定义邮件主题) + '&body=' + encodeURIComponent(自定义邮件正文) - 整个发信操作在用户本地已配置好的邮件客户端完成,你不需要处理任何发信逻辑、也不会接触到用户的邮箱凭证
- 局限性:仅适用于用户本地有配置可用邮件客户端的场景,无法在后台静默发信
- Web端代码示例:
- 避坑提示
- 不建议自行搭建SMTP服务器发信,个人/小团队搭建的SMTP服务IP普遍没有经过域名校验、白名单收录,发出去的邮件大概率会被主流邮箱服务商判定为垃圾邮件甚至直接拦截
- 如果你选用第三方邮件API服务,一定要把API调用逻辑放在服务端处理,绝对不要把你的服务商API密钥暴露在前端代码中,避免密钥被盗用产生额外资费
内容的提问来源于stack exchange,提问作者Brute
相关产品推荐
相关产品推荐

