【问题标题】:Rails mailer deliver : getaddrinfo: Name or service not knownRails 邮件发送:getaddrinfo:名称或服务未知
【发布时间】:2014-06-28 19:02:45
【问题描述】:

当我尝试在我的 rails 应用程序中向用户发送确认邮件时,它会在我的浏览器中显示以下错误:

SocketError (getaddrinfo: Name or service not known)

突出显示这一行:SwarmNotifier.confirmvisitor(@member).deliver

这里是邮件程序中的 swarm_notifier.rb:

class SwarmNotifier < ActionMailer::Base

  def confirmplayer(member)
    @member = member

    mail :to => @member.email, :from => "myappadress@gmail.com", :subject => "Player registration confirmation"
  end

  def confirmadmin(member)
    @member = member

    mail :to => @member.email, :from => "myappadress@gmail.com", :subject => "Administrator registration confirmation"
  end

  def confirmvisitor(member)
    @member = member

    mail :to => @member.email, :from => "myappadress@gmail.com", :subject => "Visitor registration confirmation"
  end
end

调用这些确认方法的 member_controller.rb 是这样的:

 def create
    @member = Member.new(member_params)

    respond_to do |format|
      if @member.save
    case @member.role
    when "visitor"
          SwarmNotifier.confirmvisitor(@member).deliver
    when "administrator"
          SwarmNotifier.confirmadmin(@member).deliver
    when "player"
          SwarmNotifier.confirmplayer(@member).deliver
        end
        format.html { redirect_to @member, notice: 'Member was successfully created.' }
        format.json { render :show, status: :created, location: @member }
      else
        format.html { render :new }
        format.json { render json: @member.errors, status: :unprocessable_entity }
      end
    end
  end

我的 setup_mail.rb 如下所示:

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :address => "stmp.gmail.com", 
  :port  => 587,
  :domain  => 'localhost',
  :user_name => "myappadress@gmail.com",
  :password => "mypass",
  :authentication => "plain",
  :enable_starttls_auto => true
}

ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.perform_deliveries = true

有人可以帮我解决这个问题吗?

【问题讨论】:

标签: ruby-on-rails mailer


【解决方案1】:

我终于找到了神奇的解决方案:我学校的防火墙阻止了我的 smtp 连接...

【讨论】:

    【解决方案2】:

    语法错误 - 你在 :from 之后忘记了 =&gt;

    mail :to => @member.email, :from => "myappadress@gmail.com", :subject => "Player registration confirmation"
    

    【讨论】:

    • 现在我解决了这个问题,我遇到了另一个错误:getaddrinfo: Name or service not known at this line SwarmNotifier.confirmvisitor(@member).deliver in swarm_notifier.rb
    • 您尚未在本地主机中配置邮件服务器或您的系统没有 Internet 连接。
    • 我认为配置 setup_mail.rb 就足够了吗?我应该安装 sendmail 吗?
    • 我如何知道我的应用程序是否可以访问互联网?
    • 那将是一个单独的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多