【发布时间】: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
有人可以帮我解决这个问题吗?
【问题讨论】:
-
尝试将您的本地主机名更改为
127.0.0.1 -
我刚刚做了,我遇到了同样的错误..
-
又是同样的错误..
标签: ruby-on-rails mailer