共计 2148 个字符,预计需要花费 6 分钟才能阅读完成。
k8s 安装好 chathoot 后配置好了邮件的相关变量
官方配置示例
SMTP_ADDRESS: ""
SMTP_AUTHENTICATION: plain
SMTP_ENABLE_STARTTLS_AUTO: true
SMTP_OPENSSL_VERIFY_MODE: none
SMTP_PASSWORD:""
SMTP_PORT: 587
SMTP_USERNAME: ""
报错如下
2025-10-14T06:12:58.399832 #1] INFO -- : [ActiveJob] [ActionMailer::MailDeliveryJob] [92946b3f-1dbc-4db3-87c9-3b14159d218a] Delivered mail 68ede9e5584a0_1357b46429b@my-chatwoot-worker-84bfccfd47-kmwtf.mail (5038.4ms) E, [2025-10-14T06:12:58.400153 #1] ERROR -- : [ActiveJob] [ActionMailer::MailDeliveryJob] [92946b3f-1dbc-4db3-87c9-3b14159d218a] Error performing ActionMailer::MailDeliveryJob (Job ID: 92946b3f-1dbc-4db3-87c9-3b14159d218a) from Sidekiq(default) in 5058.29ms: Net::ReadTimeout (Net::ReadTimeout with #<Socket:(closed)>): /usr/local/lib/ruby/3.3.0/net/protocol.rb:229:in rbuf_fill'/usr/local/lib/ruby/3.3.0/net/protocol.rb:199:in readuntil' /usr/local/lib/ruby/3.3.0/net/protocol.rb:209:in readline'/gems/ruby/3.3.0/gems/net-smtp-0.3.4/lib/net/smtp.rb:1057:in recv_response' /gems/ruby/3.3.0/gems/net-smtp-0.3.4/lib/net/smtp.rb:659:in block in do_start'/gems/ruby/3.3.0/gems/net-smtp-0.3.4/lib/net/smtp.rb:1067:in critical' /gems/ruby/3.3.0/gems/net-smtp-0.3.4/lib/net/smtp.rb:659:in do_start'/gems/ruby/3.3.0/gems/net-smtp-0.3.4/lib/net/smtp.rb:611:in start' /gems/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in start_smtp_session'/gems/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in deliver!' /gems/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:2145:in do_delivery'/gems/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:253:in block in deliver' /gems/ruby/3.3.0/gems/actionmailer-7.0.8.7/lib/action_mailer/base.rb:588:in block in deliver_mail'/gems/ruby/3.3.0/gems/activesupport-7.0.8.7/lib/active_support/notifications.rb:206:in block in instrument'
解决办法:添加超时配置来解决
SMTP_ADDRESS: "smtp.163.com"
SMTP_AUTHENTICATION: "plain"
SMTP_ENABLE_STARTTLS_AUTO: false
SMTP_OPENSSL_VERIFY_MODE: "none"
SMTP_PASSWORD: "xxxxxxx"
SMTP_PORT: 465
SMTP_DOMAIN: "163.com"
SMTP_USERNAME: "g6k@163.com"
SMTP_READ_TIMEOUT: 60
SMTP_OPEN_TIMEOUT: 30
SMTP_TLS: true
SMTP_SSL: true

问题可能原因
Ruby 的 Net::SMTP
仍采用同步阻塞的网络模型,却没有默认的超时保护机制。设置超时并不是“权宜之计”,而是为这个老旧的同步模型补上了在现代网络环境中必需的“自我防御系统”。之所以需要这样做,是因为 Ruby 的 SMTP 实现多年未随时代更新。
微信扫描下方的二维码阅读本文
正文完