我正在使用 Rails 4 和 Ruby 2.0.0 开发一个 rails 应用程序。我的联系页面中有一个表格,我想从该表格向管理员发送电子邮件。我选择使用 smtp,这是我的配置文件:
# config/initializers/setup_mail.rb
ActionMailer::Base.smtp_settings = {
adress: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
user_name: "my-gmail-login@gmail.com",
password: "my-gmail-password",
authentication: :plain,
enable_starttls_auto: true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
ActionMailer::Base.raise_delivery_errors = true
这是我的邮件控制器:
# mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default from: "my-gmail-login@gmail.com"
def welcome_email(user)
@user = user
@url = "localhost:3000/signin"
mail(to: user.email,
subject: "Welcome")
end
end
最后,我的邮件视图:
# app/views/user_mailer/welcome_mailer.html.erb
<h1>Congratulations "#{@user.firstname} #{@user.lastname}"</h1>
当我打开“$> rails 控制台”时,我输入以下内容:
$> UserMailer.welcome_email(User.first).deliver
鉴于 rails 文档http://guides.rubyonrails.org/action_mailer_basics.html,这就是我所需要的。不幸的是我有一个连接错误:
Sent mail to xxx@gmail.com (10.4ms)
Date: Tue, 21 May 2013 23:09:49 +0200
From: my-gmail-login@gmail.com
To: xxx@gmail.com
Message-ID: <519be29...-Mac.local.mail>
Subject: =?UTF-8?Q?Welcome?=
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<h1>Congratulations XXX YYY</h1>=
Errno::ECONNREFUSED: Connection refused - connect(2)
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/net/smtp.rb:540:in `initialize'
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/net/smtp.rb:540:in `open'
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/net/smtp.rb:540:in `tcp_socket'
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/net/smtp.rb:550:in `block in do_start'
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/timeout.rb:65:in `timeout'
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/net/smtp.rb:549:in `do_start'
from /usr/local/rvm/rubies/ruby-2.0.0-rc2/lib/ruby/2.0.0/net/smtp.rb:519:in `start'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/mail-2.5.3/lib/mail/network/delivery_methods/smtp.rb:136:in `deliver!'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/mail-2.5.3/lib/mail/message.rb:2033:in `do_delivery'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/mail-2.5.3/lib/mail/message.rb:229:in `block in deliver'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/actionmailer-4.0.0.beta1/lib/action_mailer/base.rb:456:in `block in deliver_mail'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/activesupport-4.0.0.beta1/lib/active_support/notifications.rb:158:in `block in instrument'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/activesupport-4.0.0.beta1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/activesupport-4.0.0.beta1/lib/active_support/notifications.rb:158:in `instrument'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/actionmailer-4.0.0.beta1/lib/action_mailer/base.rb:454:in `deliver_mail'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/mail-2.5.3/lib/mail/message.rb:229:in `deliver'
from (irb):1
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/railties-4.0.0.beta1/lib/rails/commands/console.rb:88:in `start'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/railties-4.0.0.beta1/lib/rails/commands/console.rb:9:in `start'
from /usr/local/rvm/gems/ruby-2.0.0-rc2/gems/railties-4.0.0.beta1/lib/rails/commands.rb:64:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'2.0.0dev :002 >
你知道这个错误可能来自哪里吗?以及如何解决?
谢谢您的帮助。