Rails邮件传递: getaddrinfo:名称或服务未知

3
当我在Rails应用程序中尝试向用户发送确认邮件时,浏览器会显示以下错误:
SocketError (getaddrinfo: Name or service not known)

请高亮此行代码:SwarmNotifier.confirmvisitor(@member).deliver

这是 mailer 中 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

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

尝试将您的本地主机名更改为127.0.0.1 - Pavan
我刚刚尝试了一下,但是还是出现了相同的错误。 - yolo
尝试查看此帖子:http://stackoverflow.com/questions/23300150/actionmailer-not-working-when-i-change-gmail-password/23300459#23300459 - Shamsul Haque
同样的错误又出现了。。 - yolo
2个回答

3

我终于找到了解决办法:我的学校防火墙阻止了我的SMTP连接...


0
语法错误 - 你忘记在:from后面加上=>
mail :to => @member.email, :from => "myappadress@gmail.com", :subject => "Player registration confirmation"

现在我修复了这个问题,但我又遇到了另一个错误:在swarm_notifier.rb文件中的SwarmNotifier.confirmvisitor(@member).deliver这一行出现了getaddrinfo: Name or service not known。 - yolo
你的本地主机尚未配置电子邮件服务器,或者你的系统没有互联网连接。 - Raj
我以为配置setup_mail.rb就足够了?我需要安装sendmail吗? - yolo
我的应用程序如何知道是否有网络连接? - yolo
那将是一个单独的问题。 - Raj
在控制台中,似乎邮件已发送但收件箱中没有任何内容:已向receiver@gmail.com发送邮件(92.1毫秒) 日期:2014年5月11日星期日15:42:55 +0200 发件人:adressapp@gmail.com 收件人:receiver@gmail.com 消息ID:536f7e5fc0222_77e7279e2ec223@user.mail 主题:访客注册确认 Mime版本:1.0 内容类型:多部分/替代; 边界="--==_mimepart_536f7e5fb79be_77e7279e2ec132"; 字符集=UTF-8 内容传输编码:7位 - yolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接