2010-07-16 91 views
34

我試圖從我的生產服務器上的控制檯發出一些郵件,他們不會出去。我無法弄清楚爲什麼。我只用sendmail的標準電子郵件設置。當我打電話的Mailer.deliver_方法我得到這個回:從rails控制檯發送郵件

#<TMail::Mail port=#<TMail::StringPort:id=0x3fe1c205dbcc> bodyport=#<TMail::StringPort:id=0x3fe1c2059e00>> 

編輯:添加一些更多的信息:

因此,舉例來說,我在我的控制器時,新用戶註冊這一行,發送給他們一個「歡迎」電子郵件:

Mailer.deliver_signup(@user, request.host_with_port, params[:user][:password]) 

這工作正常。我想我應該能夠從控制檯做同樣的事情,如

user = User.find(1) 
Mailer.deliver_signup(user, "mydomainname.com", "password") 

當我這樣做,我得到的Tmail :: StringPort對象回來,但郵件似乎得不到送出(我試圖發郵件給我自己來測試這個)。

我在Ubuntu的服務器,以防萬一。謝謝 - 最大

+0

你嘗試電子郵件發送到互聯網? – txwikinger 2010-07-16 17:01:10

+0

這對於交付方法的返回值來說非常標準,您的sendmail或目標電子郵件可能有問題。 – Karl 2010-07-16 21:49:31

回答

16

對於首先從Rails控制檯發送電子郵件,我們必須在控制檯中執行此設置以進行動作郵件設置。

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: 587, 
    domain: 'gmail.com', 
    authentication: 'plain', 
    enable_starttls_auto: true, 
    user_name: '[email protected]', 
    password: 'yourpassword' 
} 

之後如果我們執行電子郵件發送代碼,它會發送電子郵件。

UserMailer.activation_instructions(@user).deliver_now 
0

我不是100%,如果我明白你想要做什麼。

如果您嘗試將電子郵件發送到Internet,則必須配置您的sendmail以將這些電子郵件轉發到正確的電子郵件服務器。根據您使用的Ubuntu版本,您可以重新配置程序包來執行此操作。

你也可能會想如果你想使用procmail而不是sendmail。

您可以重新配置與

dpkg-reconfigure sendmail 
使用的procmail

,而不是如果您使用的包裝電子郵件配置。配置對話框提供了一些選項,您可以將其配置爲將所有郵件轉發到相應的電子郵件服務器。但是,您需要考慮是否需要驗證,或者該服務器是否只接受來自服務器的電子郵件。

+0

嗨 - 對不起,我應該提供一些更多的細節。我編輯了我原來的帖子。 – 2010-07-19 08:35:06

45

我今天早上遇到了類似的問題在一個Rails應用程序3,我叫:

UserMailer.activation_instructions(@user) 

這給我的數據,但沒有發送電子郵件了。發送,我打電話:

UserMailer.activation_instructions(@user).deliver 

這沒有把戲。希望這可能也適合你!

+3

似乎不適合我,你是否必須顯式設置rails env,以便它能夠獲得正確的actiomailer環境配置? – Rubytastic 2012-03-04 22:36:58

60

更快的版本:

ActionMailer::Base.mail(
    from: "[email protected]", 
    to: "[email protected]", 
    subject: "Test", 
    body: "Test" 
).deliver 
+2

這比較好,儘管'deliver'已被棄用,我們鼓勵使用'deliver_now'代替。 – iamse7en 2015-10-29 16:14:03

+0

但是我將如何使用現有模板? 就像一個UserMailer.account_activation電子郵件.. – sambehera 2016-04-14 03:16:28