You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Swoosh发送邮件遇超时错误,寻求技术支援

解决Swoosh发送Gmail邮件的超时问题

看起来你被Swoosh发送Gmail邮件的超时问题卡住了,结合你的代码和错误信息,我帮你梳理几个关键问题,一步步解决:

1. 先把配置里的「重复adapter」坑填上

你的config.exs里重复写了三次adapter,Elixir的配置会取最后一个生效——也就是Swoosh.Adapters.Local,这根本不是用来发真实SMTP邮件的适配器!这是导致你无法连接Gmail SMTP的第一个核心问题:

# 错误的配置(重复adapter,最后Local生效)
config :mailapp, Mailapp.Mailer,
  adapter: Swoosh.Adapters.SMTP,
  adapter: Swoosh.Adapters.Test,
  adapter: Swoosh.Adapters.Local, # 这个会覆盖前面所有adapter设置
  relay: "smtp.gmail.com",
  username: "firstname.lastname",
  password: "password",
  tls: :always,
  auth: :always,
  port: 1025

改成只保留SMTP适配器,同时修正几个关键参数:

config :mailapp, Mailapp.Mailer,
  adapter: Swoosh.Adapters.SMTP,
  relay: "smtp.gmail.com",
  username: "your-full-gmail@gmail.com", # 必须填完整邮箱地址,不是前缀
  password: "your-app-specific-password", # 下面会讲这个密码的要求
  tls: :always,
  auth: :always,
  port: 587 # Gmail SMTP的正确TLS端口,不是1025(1025是Local适配器的测试端口)

2. 搞定Gmail SMTP的认证要求

Gmail对SMTP客户端的限制比较严格,这里有两个必注意的点:

  • 端口选择:用587(TLS模式)或者465(SSL模式),你之前写的1025是Local适配器用来本地测试的端口,完全不匹配Gmail的服务,这也是超时的主要原因。
  • 密码问题:如果你的Google账号开启了两步验证,普通的登录密码无法用于SMTP,必须创建应用专用密码:
    1. 登录Google账号的安全设置页面
    2. 找到「应用专用密码」(前提是已经开启两步验证)
    3. 创建一个新的应用专用密码,把这个密码填到配置里即可
  • 用户名:一定要填写完整的Gmail邮箱地址,比如firstname.lastname@gmail.com,不能只写前缀firstname.lastname。

3. 检查网络连通性

超时也可能是本地网络阻止了SMTP请求,你可以先测试下能不能连通Gmail的SMTP服务器:

telnet smtp.gmail.com 587

如果连接失败,检查本地防火墙、杀毒软件是否拦截了587端口的出站请求,或者你的网络是否能正常访问Google服务。

4. 测试修正后的代码

修改配置后,重启iex并重新编译项目:

iex -S mix

然后再执行发送命令试试:

Mailapp.UserEmail.welcome(%{name: "Name", email: "example.name@gmail.com"}) |> Mailapp.Mailer.deliver

额外提示:分环境配置更清晰

如果你想在测试环境用Test适配器(比如你写的测试用例),不要把生产和测试配置混在一起,建议分环境配置:

# config/config.exs(生产/开发环境)
config :mailapp, Mailapp.Mailer,
  adapter: Swoosh.Adapters.SMTP,
  relay: "smtp.gmail.com",
  # ... 其他生产配置参数

# config/test.exs(测试环境)
config :mailapp, Mailapp.Mailer,
  adapter: Swoosh.Adapters.Test

这样测试时用Test适配器,开发/生产用SMTP,不会出现配置冲突的问题。

内容的提问来源于stack exchange,提问作者Sh4dy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:23:52