2014-02-22 46 views
0

我的目标:电子邮件的形式页面 - 如果用户按下发送它的电子邮件发送到管理员帐户发送电子邮件问题Amazon EC2上使用Rails应用程序

确定我跟着轨教程。

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'google.com', 
    user_name:   'MYACCOUNT', 
    password:    'MYPAASSWORD', 
    authentication:  'plain', 
    enable_starttls_auto: true } 
    # Print deprecation notices to the Rails logger. 

设置这样,

和它的作品完美!在我的本地主机

但如果我部署到亚马逊ec2。这是行不通的,但nginx的服务器日志说没有错误:(

Processing by IndexController#send_email as */* 
App 2705 stderr: Parameters: {"contactName"=>"asfsdf", "email"=>"[email protected]", "comments"=>"asdf", "submitted"=>"true"} 
App 2705 stderr: 
App 2705 stderr: Sent mail to [email protected] (10.9ms) 
App 2705 stderr: Date: Sat, 22 Feb 2014 01:49:08 +0000 
App 2705 stderr: From: [email protected] 
App 2705 stderr: Reply-To: [email protected] 
App 2705 stderr: To: [email protected] 
App 2705 stderr: Message-ID: <[email protected]> 
App 2705 stderr: Subject: asfsdf***** MAIL FROM MY SITE****** 
App 2705 stderr: Mime-Version: 1.0 
App 2705 stderr: Content-Type: text/plain; 
App 2705 stderr: charset=UTF-8 
App 2705 stderr: Content-Transfer-Encoding: 7bit 

我认为这不是一个代码问题的辩论,因为这是工作的罚款在我的本地

我认为我有?设置配置在EC2一些地方

你能不能帮我这个谢谢

回答

1

有一些潜在的问题在这里:


生产

development.rb是你的SMTP设置(详细说明问题)?这意味着他们只注册时,您的应用程序开发环境

这是常见的错误运行,并且可以通过在config/environments/production.rbconfig/application.rb


SMTP应用相同的代码来解决

某些服务(Heroku是其中之一)高度鼓励在您的应用程序后面使用第三方“事务性”SMTP服务。 Notibly,SendGridMandrill是我们与SendGrid &的Heroku(亚马逊)采用最流行的两种

这里是工作代码:

#config/environments/production.rb 
    config.action_mailer.smtp_settings = { 
    :address  => 'smtp.sendgrid.net', 
    :port   => '587', 
    :authentication => :plain, 
    :user_name  => ENV['SENDGRID_USERNAME'], 
    :password  => ENV['SENDGRID_PASSWORD'], 
    :domain   => 'heroku.com', 
    :enable_starttls_auto => true 
    } 

发送

另一个问题可能是如何你正在发送消息

许多系统(英雄ku是一个)有一个超时时间。这很重要,因为这意味着如果您的电子邮件比发送超时时间长,服务器将自动终止进程

更健壮的方法是使用类似Resque & Redis的邮件来排队,确保您不会超时请求

0

由于IP已被Spamhaus列入黑名单,它可能会被最终用户拒绝。您不应使用EC2实例发送电子邮件,而应使用Amazon SES(每天最多可免费获得ec2实例)或第三方供应商(如sendgrid或authsmtp)的服务。

相关问题