Почта на самом деле не отправляется, хотя мой журнал говорит, что это - PullRequest
0 голосов
/ 28 ноября 2010

Rails 2.3.5

Это у меня на месте.

У меня есть простая модель / представление / контроллер

#contact.rb

def deliver_contact
  ContactMailer.deliver_contact(self)
end

#contacts_controller

def create
  @contact = Contact.new(params[:contact])

  respond_to do |wants|
    if @contact.save
      @contact.deliver_contact
      #flash[:notice] = 'Contact was successfully created.'
      wants.html { redirect_to('/thanks') }
    else
      wants.html { render :action => "new" }
    end
  end

В журнале написано, что он выходит.Я могу сделать это в своей консоли, и он говорит, что он выходит.Но на самом деле ничего не получено в моем почтовом ящике.Чего мне не хватает?

Обновление

Вот мой development.rb:

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :address => "smtp.gmail.com",
  :port => '25',
  :domain => "website.com",
  :authentication => :login,
  :user_name => "snackmail@gmail.com",
  :password => "aged-cheese"
}

Журнал создания

Processing ContactsController#create (for 127.0.0.1 at 2010-11-28 16:12:49) [POST]
  Parameters: {"commit"=>"PUNCH IT, CHEWY!", "action"=>"create", "authenticity_token"=>"3zayXGIOWeNLwb+jhx5cIxWgHqEJdv6iwj6I=", "contact"=>{"name"=>"bob marley", "message"=>"asdfasdf", "state_id"=>"Regarding an existing order", "email"=>"daniel@gmail.com"}, "controller"=>"contacts"}
Cache miss: Spree::Config ({})
  Preference Load (0.3ms)   SELECT * FROM "preferences" WHERE ("preferences".owner_id = 1 AND "preferences".owner_type = 'Configuration') 
  Configuration Load (0.1ms)   SELECT * FROM "configurations" WHERE ("configurations"."id" = 1) 
  CACHE (0.0ms)   SELECT * FROM "configurations" WHERE ("configurations"."id" = 1) 
Cache write (will save 2.65ms): Spree::Config
  Contact Create (0.8ms)   INSERT INTO "contacts" ("name", "city", "zip", "created_at", "optin", "updated_at", "state_id", "message", "email") VALUES('bob marley', NULL, NULL, '2010-11-28 21:12:49', NULL, '2010-11-28 21:12:49', 'Regarding an existing order', 'asdfasdf', 'daniel.levine4@gmail.com')
Sent mail to daniel@gmail.com

Date: Sun, 28 Nov 2010 16:12:50 -0500
From: info@jersey.com
To: daniel@gmail.com
Subject: HOLY !@ you got mail!
Mime-Version: 1.0
Content-Type: text/html; charset=utf-8

<strong>You have just received a dank crispy email.</strong>
<br />
<p>
  Here are the details of the message:
</p>
<p>
  <strong>Name:</strong>
  bob marley
</p>
<p>
  <strong>Email:</strong>
  daniel@gmail.com
</p>

<p>
  <strong>Subject:</strong>
  Regarding an existing order
</p>

<p>
  <strong>Message:</strong>
  <br />
  asdfasdf
</p>
Redirected to http://localhost:3000/thanks
Completed in 893ms (DB: 5) | 302 Found [http://localhost/contacts]

обновление:

Пробовал с помощью плагина gmail tls, но он не работал.попытался переместить настройки из environment.rb в development.rb.

Я использую spree, но если я помещаю что-то в environment или development.rb в / config, он переопределяет настройки Spree по умолчанию.Кроме того, я могу создать почтовый сервер в администраторе Spree, и с правильными характеристиками он все еще не сдвинется с места.

Ответы [ 3 ]

6 голосов
/ 28 ноября 2010

Если вы запускаете приложение в режиме разработки, ваша электронная почта не будет отправлена, а будет зарегистрирована.Чтобы на самом деле отправить электронное письмо в режиме разработки, измените config/environment.rb на что-то вроде:

Rails::Initializer.run do |config|
  ...
  config.action_mailer.delivery_method = :sendmail # add this line
end
1 голос
/ 29 ноября 2010

В config\environments\development.rb есть ли у вас следующие строки:

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false

Если это так, прокомментируйте их и добавьте следующие строки чтобы включить поставки из разработки:

# To test if we can actually send mails!
config.action_mailer.raise_delivery_errors = true # for test
config.action_mailer.perform_deliveries = true
0 голосов
/ 29 ноября 2010

Я нашел две вещи, которые решили эту часть для меня.

  1. Я использовал Spree, так что я имел в виду, что мне нужно было настроить параметры почты внутри.Прежде чем я понял, что я пошел с запросом @ lbz, чтобы установить плагин для TLS в отправках Gmail.Оказывается, это молча конфликтует с настройками, поэтому, когда я его удалил, это сработало.

  2. Чтобы получать электронные письма для отправки на ваш тестовый сервер, вы также должны прокомментировать эту строку:

    # config.action_mailer.delivery_method = :test

...