Rails 开发中不通过 Mandrillapp 发送邮件(提供节点名或服务名)

Rails not sending mails in development via Mandrillapp (nodename nor servname provided)

我 运行 关注这个问题:

SocketError in Front::RequestsController#create

getaddrinfo: nodename nor servname provided, or not known
Extracted source (around line #539):

#537 
#538     def tcp_socket(address, port)
*539       TCPSocket.open address, port
#540     end
#541 
#542     def do_start(helo_domain, user, secret, authtype)

尝试在本地通过 Mandrillapp 发送邮件时。这是我的 development.rb 文件:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true 

  config.action_mailer.delivery_method = :smtp

  # Specify what domain to use for mailer URLs 

  config.action_mailer.smtp_settings = {
    user_name: 'my_user_name',
    password: 'my_password',
    domain: 'localhost:3000',
    address: 'smtp.mandrillapp.com"',
    port: 587,
    authentication: :plain,
    enable_starttls_auto: true
  }

在生产环境中一切正常,即使通过 Figaro (application.yml) 加载这些变量也是如此。但是,在开发模式下,我 运行 遇到了上面提供的问题。

我尝试了不同的端口、不同的设置...在开发中没有任何效果。至少有人能指出我正确的调试方向吗?大多数 SO 答案,例如 this 根本没有帮助。

根据共享的详细信息,您似乎在指定 smtp 设置时在地址键中添加了额外的引号,并且在尝试连接到地址时显示此错误:

当前设置

config.action_mailer.smtp_settings = {
 user_name: 'my_user_name',
 password: 'my_password',
 domain: 'localhost:3000',
 address: 'smtp.mandrillapp.com"',
 port: 587,
 authentication: :plain,
 enable_starttls_auto: true
}

更新设置:

config.action_mailer.smtp_settings = {
 user_name: 'my_user_name',
 password: 'my_password',
 domain: 'localhost:3000',
 address: 'smtp.mandrillapp.com',
 port: 587,
 authentication: :plain,
 enable_starttls_auto: true
}