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

Rails应用使用Zoho Mail发送邮件时遭遇EOFError - end of file reached错误求助

解决Rails + Zoho Mail发送邮件的EOFError问题

碰到这个EOFError - end of file reached通常是SMTP连接在握手或通信过程中异常中断了,结合你的配置来看,大概率是SSL/TLS参数冲突导致的,咱们一步步来解决:

1. 修复SMTP配置的参数冲突

你的配置里同时设置了:ssl => true、:tls => true和:enable_starttls_auto => true,但Zoho的SMTP端口对应的加密规则是不一样的,这几个参数混着用会直接导致连接异常:

  • 465端口:属于直接SSL加密的SMTPS端口,不需要STARTTLS握手流程,所以只保留:ssl => true即可,删掉另外两个TLS相关参数。
  • 587端口:属于需要通过STARTTLS升级加密的端口,这时候要保留:enable_starttls_auto => true和:tls => true,去掉:ssl => true。

修改后的配置示例(二选一即可)

465端口配置方案:

config.action_mailer.smtp_settings = {
  :address => "smtp.zoho.com",
  :port => 465,
  :user_name => 'info@mydomainname.com',
  :password => 'zoho_mail_password',
  :authentication => :login,
  :ssl => true
}

587端口配置方案:

config.action_mailer.smtp_settings = {
  :address => "smtp.zoho.com",
  :port => 587,
  :user_name => 'info@mydomainname.com',
  :password => 'zoho_mail_password',
  :authentication => :login,
  :enable_starttls_auto => true,
  :tls => true
}

2. 排查其他潜在问题

如果调整配置后还是报错,检查下面几个关键点:

  • 确认Zoho SMTP服务已开启:登录Zoho邮箱后台,进入「设置」→「邮件账户」→「POP/IMAP/SMTP」,确保SMTP服务处于启用状态。
  • 验证密码有效性:如果你的Zoho账户开启了两步验证(2FA),必须使用应用专用密码,不能用日常登录密码;未开启2FA则直接使用登录密码即可。
  • 测试网络连通性:在终端执行telnet smtp.zoho.com 465或telnet smtp.zoho.com 587,测试端口是否能正常连通,如果连不上,可能是本地防火墙或服务器安全组拦截了这些端口。

调整完配置后重启Rails服务器,再测试邮件发送,应该就能解决这个EOFError了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:02:38