我在config/environments/production.rb
和development.rb
都设置了smtp设置,我也在`config / initializers / setup_mail.rb
config.action_mailer.default_url_options = { :host => 'ipaddress' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'gmail.com',
:user_name => 'EMAIL_ADDRESS@gmail.com',
:password => 'pass',
:authentication => :plain,
:enable_starttls_auto => true,
:openssl_verify_mode => 'none'
}
配置/初始化/为setup_mail.rb
ActionMailer::Base.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'gmail.com',
:user_name => 'EMAIL_ADDRESS@gmail.com',
:password => 'pass',
:authentication => :plain,
:enable_starttls_auto => true,
:openssl_verify_mode => 'none'
}
ActionMailer::Base.default_url_options[:host] = "ipaddress"
我收到错误Connection refused - connect(2)
虽然我在localhost中使用以下配置工作但我没有收到任何错误,并且还发送了邮件。
config / initializers / setup_mail.rb(localhost)
ActionMailer::Base.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'localhost',
:user_name => 'EMAIL_ADDRESS@gmail.com',
:password => 'pass',
:authentication => 'plain',
:enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
在控制台中运行时,错误显示如下
Errno::ECONNREFUSED: Connection refused - connect(2)
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/net/smtp.rb:541:in `initialize'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/net/smtp.rb:541:in `open'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/net/smtp.rb:541:in `tcp_socket'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/net/smtp.rb:550:in `block in do_start'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/timeout.rb:69:in `timeout'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/net/smtp.rb:550:in `do_start'
from /home/attuser/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/net/smtp.rb:520:in `start'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/mail-2.4.4/lib/mail/network/delivery_methods/smtp.rb:144:in `deliver!'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/mail-2.4.4/lib/mail/message.rb:2034:in `do_delivery'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/mail-2.4.4/lib/mail/message.rb:229:in `block in deliver'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/actionmailer-3.2.9/lib/action_mailer/base.rb:415:in `block in deliver_mail'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/activesupport-3.2.9/lib/active_support/notifications.rb:123:in `block in instrument'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/activesupport-3.2.9/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/activesupport-3.2.9/lib/active_support/notifications.rb:123:in `instrument'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/actionmailer-3.2.9/lib/action_mailer/base.rb:413:in `deliver_mail'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/mail-2.4.4/lib/mail/message.rb:229:in `deliver'
from (irb):28
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/railties-3.2.9/lib/rails/commands/console.rb:47:in `start'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
from /home/attuser/.rvm/gems/ruby-1.9.3-p545/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
控制器
def sendResume
@name =params[:name]
@email_id = params[:email_id]
@mob_no = params[:ph_no]
attachments = params[:resume]
if simple_captcha_valid?
if params[:resume]
filename=attachments.original_filename
extname = File.extname(filename)[1..-1]
mime_type = Mime::Type.lookup_by_extension(extname)
content_type = mime_type.to_s unless mime_type.nil?
if content_type !="application/pdf"
flash[:error]= "Only pdf files are allowed"
redirect_to :action=>"careers"
else
File.open(Rails.root.join('tmp', 'uploads', attachments.original_filename), 'w') do |file|
re = attachments.read
file.write(re.force_encoding("utf-8"))
@attached_path = file.path
end
begin
ResumeMailer.sendResume(@name, @email_id, @mob_no, @attached_path, attachments.original_filename).deliver
flash[:notice] = "Your resume has been submitted successfully"
redirect_to :action=>"careers"
rescue Exception => e
puts e.message
logger.warn "error sending mail"
flash[:error]= "Error in submitting resume"
redirect_to :action=>"careers"
end
end
else
flash[:error]= "Please upload your resume"
redirect_to :action=>"careers"
end
else
flash[:error]= "Incorrect captcha"
redirect_to :action=>"careers"
end
end
安装postfix
后,错误在控制台模式下消失,邮件从控制台发送但在图形模式下(在浏览器中)我收到错误Connection refused - connect(2)
。
出了什么问题,
提前感谢。
答案 0 :(得分:7)
我发现您在两台服务器上都尝试过相同的设置,但仅在您的生产/非本地主机环境中遇到问题。
这指出了环境本身的网络配置问题。
在与应用程序相同的服务器上的命令行中,尝试以下命令
telnet smtp.gmail.com 587
你应该看到类似下面的内容
telnet smtp.gmail.com 587
Trying 173.194.79.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP dd5sm276863pbc.85 - gsmtp
如果您没有看到此信息,则很可能会出现连接错误。这意味着您的计算机无法访问gmail服务器。可能的问题是a)一般的出站网络连接,b)防火墙专门阻止所有出站连接c)防火墙阻止/允许连接到特定端口或主机
如果这不起作用,请尝试使用以下端口代替587
telnet smtp.gmail.com 465
telnet smtp.gmail.com 25
如果其中一个更成功,请更改您的邮件服务器设置以便相应使用。
编辑:我们在使用Gmail和Gmail以及我们的自定义域时遇到了一些麻烦。可以帮助的一件事是从配置文件中删除:域行,尝试没有它。
供参考,以下是我使用Gmail托管的自定义域名生成的Gmail配置:
config.action_mailer.default_url_options = { :host => "my.website.com" }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'website.com',
user_name: 'user@website.com',
password: 'password',
authentication: 'plain',
enable_starttls_auto: true
}
此外,如果您的Gmail帐户启用了双因素身份验证,则可能需要将其禁用并再次尝试此操作,以确认其不会使问题复杂化。
答案 1 :(得分:1)
您将域名作为localhost。域名应该是gmail.com。 请将您的config / initializers / setup_mail.rb更改为
ActionMailer::Base.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'gmail.com',
:user_name => 'EMAIL_ADDRESS@gmail.com',
:password => 'pass',
:authentication => 'plain',
:enable_starttls_auto => true
}
并在production.rb。您不需要配置电子邮件地址。以下几行就足够了。
config.action_mailer.default_url_options = { :host => 'app_url' }
config.action_mailer.delivery_method = :smtp