最近搭建了一个邮箱服务器,用着倒是挺舒服的,就是感觉有点吃力不讨好。主要是因为我不需要太多前缀,有那么一两个就够了,常用的[email protected]、[email protected]、[email protected]。想想办法,看能不能找个免费的邮件收发服务,且支持自定义域名。这样我就不用自己搭建了,省去了不少麻烦。
最终找到一套完美的方案:
- CloudFlare收邮件
- Gmail发邮件
用CloudFlare收邮件很简单,重点讲讲怎么用Gmail发送自定义域名邮件
第一步:申请Google应用专用密码
登陆Google账号--->账号管理--->安全性--->两步验证--->应用专用密码,名字可以写成你这个专用密码的具体用途,比如:Gmail自定义域名邮箱example.com专用密码
点击创建,会给你一个16位的密码,只显示一次,保存起来方便以后用。密码中间的空格不要删除
第二步:添加自定义域名邮箱
进入谷歌邮箱--->点击设置--->查看所有设置--->账号和导入--->添加其他电子邮件发件地址
电子邮件地址一栏填写自定义域名邮箱,比如[email protected]
,名称随便填
这一步很重要,用户名填Gmail邮箱,密码填上一步申请的应用专用密码,其他的照搬
去收件箱点一下验证链接才能绑定成功
第三步:测试
方式一:可以直接用Gmail网页端或App端发送邮件
方式二:某些情况下需要用代码发邮件,比如向网站的注册用户发送验证码,我用Python做个演示
import smtplib
from email.utils import formatdate
# 邮件服务器
smtp_server = 'smtp.gmail.com'
smtp_port = 587
smtp_username = '[email protected]' # 谷歌邮箱账号
smtp_password = '应用专用密码' # 上面申请的应用专用密码
recipient_list = ['[email protected]'] # 收件人邮箱
# 邮件内容配置
sender_email = "[email protected]" # 绑定成功的自定义域名邮箱
sender_name = "发件人姓名"
subject = '邮件主题'
content = '正文'
# 构造邮件消息
def generate_message(recipient_address):
return f'''
Date: {formatdate(localtime=True, usegmt=True)}
From: "{sender_name}" <{sender_email}>
To: {recipient_address}
Subject: {subject}
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: bit8
{content}
'''.strip()
# 发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(smtp_username, smtp_password)
for recipient_address in recipient_list:
print(generate_message(recipient_address))
smtp.sendmail(sender_email, recipient_address, generate_message(recipient_address).encode('utf-8'))
注意:一个Gmail账号,每天最多只能发送500封邮件
后续更新(2023年11月16日)
- mail-tester测试只有4.5分
- 发出去的邮件会被标记“由gmail代发”
- 可以在收件人的邮件头看到原始“gmail邮箱”,造成信息泄漏的风险
新的方案:
- 飞书企业版绑定域名邮箱。唯一缺点:不能catch-all。
- skiff,只能用skiff收发邮件,免费版不能catch-all
- cloudflare(catch-all,可以接收任意前缀的邮件)+smtp2go(send-all,可以用任意前缀发邮件)。免费额度:每个月1000封