甲骨文云Email Delivery教程:免费SMTP发信

用 OCI 白嫖发信服务的经历

之前我也尝试过自建 Postfix / Exim,结果发现:复杂、麻烦,好不容易搭建好了还容易进垃圾箱。后来偶然发现 Oracle Always Free 居然提供免费的 Email Delivery 服务,那就动手搞一搞。过程写下来,算是一个小记。


1. 进入控制台

先登录 OCI 后台:

PixPin_2025-09-23_02-48-59 PixPin_2025-09-23_02-48-592560×1229 237 KB


2. 创建电子邮件域

点击 添加电子邮件域。

PixPin_2025-09-23_02-53-08 PixPin_2025-09-23_02-53-082560×1229 257 KB

PixPin_2025-09-23_02-53-39 PixPin_2025-09-23_02-53-392560×1229 281 KB


3. 配置 DKIM

进入刚刚添加的电子邮件域 → DKIM → 添加DKIM。

PixPin_2025-09-23_02-55-33 PixPin_2025-09-23_02-55-332379×1229 257 KB

  • 设置一个 DKIM 选择器前缀(随意输入)。

PixPin_2025-09-23_02-57-42 PixPin_2025-09-23_02-57-422560×1229 283 KB

  • 获取到 CNAME 记录和值:

PixPin_2025-09-23_03-00-08 PixPin_2025-09-23_03-00-082560×1229 298 KB


4. 在 Cloudflare 添加 CNAME 解析

以 Cloudflare 为例:

CNAME 记录: dkim-selector._domainkey.yourdomain.com.
CNAME 值:   dkim-selector.yourdomain.com.dkim.xsp1.oracleemaildelivery.com

PixPin_2025-09-23_03-06-09 PixPin_2025-09-23_03-06-091561×625 42.3 KB

  • Name: dkim-selector._domainkey
  • Target: dkim-selector.yourdomain.com.dkim.xsp1.oracleemaildelivery.com
  • Proxy: 关闭(灰云),只保留 DNS。

:warning: 千万别整串粘贴 dkim-selector._domainkey.yourdomain.com. 到 Name,Cloudflare会进行域名拼接,仔细检查图中圈出来的部分


5. 验证 DKIM 状态

等一会儿,刷新后变绿:

PixPin_2025-09-23_03-13-04 PixPin_2025-09-23_03-13-042178×671 81.7 KB


6. 创建批准的发件人

进入 批准的发件人 → 创建批准的发件人。

PixPin_2025-09-23_03-15-03 PixPin_2025-09-23_03-15-032097×988 215 KB

示例:no-reply@yourdomain.com

PixPin_2025-09-23_03-16-16 PixPin_2025-09-23_03-16-161083×563 31.5 KB


7. 配置 SPF

路径:电子邮件域 → yourdomain.com → 批准的发件人 → 查看SPF。

PixPin_2025-09-23_03-19-34 PixPin_2025-09-23_03-19-342560×1152 282 KB

选择地区:

PixPin_2025-09-23_03-21-45 PixPin_2025-09-23_03-21-451613×886 56.1 KB

比如:

v=spf1 include:rp.oracleemaildelivery.com include:ap.rp.oracleemaildelivery.com include:eu.rp.oracleemaildelivery.com ~all

8. 确认域配置

全部都显示 活动:

  • 生命周期状态 :white_check_mark:
  • DKIM 签名 :white_check_mark:
  • SPF :white_check_mark:

如果 SPF 一直不亮,先继续下一步,发个测试邮件再回来,通常就好了。


9. 获取 SMTP Endpoint

控制台 → 配置 → 查看SMTP/HTTP 端点。

PixPin_2025-09-23_03-32-15 PixPin_2025-09-23_03-32-152560×1229 322 KB


10. 生成 SMTP 凭证

路径:右上角头像 → 用户设置 → 生成身份证明。

PixPin_2025-09-23_03-33-45 PixPin_2025-09-23_03-33-45595×502 31.6 KB

PixPin_2025-09-23_03-34-39 PixPin_2025-09-23_03-34-392560×1146 252 KB

  • 凭证只会显示一次,记得存好。
  • 免费账户最多 2 个 SMTP 身份。

PixPin_2025-09-23_03-35-28 PixPin_2025-09-23_03-35-281619×451 21.8 KB


11. Python 脚本测试

# send_oci_email.py
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr

SMTP_SERVER = "smtp.email.<your-region>.oci.oraclecloud.com"
SMTP_PORT = 587
SMTP_USER = "OCI SMTP username"
SMTP_PASS = "OCI SMTP password"
FROM_ADDR = "approved-sender@yourdomain.com"
FROM_NAME = "测试发送人"
TO_ADDR = "target@example.com"

msg = MIMEText("Hello from OCI Email Delivery!", "plain", "utf-8")
msg["Subject"] = Header("OCI Email Test", "utf-8")
msg["From"] = formataddr((str(Header(FROM_NAME, "utf-8")), FROM_ADDR))
msg["To"] = TO_ADDR

try:
    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT, timeout=20) as server:
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(SMTP_USER, SMTP_PASS)
        server.sendmail(FROM_ADDR, [TO_ADDR], msg.as_string())
    print("邮件发送成功!")
except Exception as e:
    print("邮件发送失败:", e)

12. 免费额度

  • 每天 200 封(2 MB = 1 封邮件,超过按比例计算)。
  • 最多 2000 个发件人。
  • 每分钟最多 10 封。
  • 附件支持,最大 2 MB(含 base64 和 header)。
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容