代码之家  ›  专栏  ›  技术社区  ›  mohnstrudel

Rails未通过mandrilapp发送开发中的邮件(提供了nodename或servname)

  •  0
  • mohnstrudel  · 技术社区  · 6 年前

    我遇到了这个问题:

    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)
    

    当试图通过当地的曼德拉普发送邮件时。这是我的 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 )然而,在开发模式上,我正碰到上面提供的问题。

    我尝试了不同的端口,不同的设置…开发没有任何效果。至少有人能给我指出正确的调试方向吗?大多数人都这样回答,比如 this 一点帮助都没有。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rohan    6 年前

    根据共享的详细信息,在指定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
    }