2015-01-22 3 views
3

Я использую AWS SES для отправки уведомлений по электронной почте клиентам в моем веб-приложении Rails 4. Когда отправляется электронное письмо, я понял, что много раз отправка по электронной почте не удается из-за ошибки тайм-аута SMTP в SES. Наконец, после некоторых попыток отправляется электронное письмо, но мне не нужны эти повторы.Amazon Web Services SES smtp timeout

Мне не нужно ничего менять в своем приложении, чтобы отправить электронное письмо, оно работает после некоторых попыток.

Я придаю журнал ошибок:

{ 70220114991960 rufus-scheduler intercepted an error: 
    70220114991960 job: 
    70220114991960  Rufus::Scheduler::EveryJob "60s" {} 
    70220114991960 error: 
    70219770058060 
    70219770058060  Net::OpenTimeout 
    70219770058060  execution expired 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:541:in `initialize' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:541:in `open' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:541:in `tcp_socket' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:551:in `block in do_start' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/timeout.rb:101:in `call' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/timeout.rb:101:in `timeout' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:550:in `do_start' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/2.1.0/net/smtp.rb:520:in `start' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.5.4/lib/mail/message.rb:232:in `block in deliver' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:456:in `block in deliver_mail' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `block in instrument' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `instrument' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:454:in `deliver_mail' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.5.4/lib/mail/message.rb:232:in `deliver' 
    70219770058060  /home/ubuntu/env/test/www/yanpyapi-test/app/models/notification_manager.rb:40:in `notify' 
    70219770058060  /home/ubuntu/env/test/www/yanpyapi-test/app/models/events/boat_provider_payment_event.rb:104:in `execute' 
    70219770058060  /home/ubuntu/env/test/www/yanpyapi-test/app/models/secretary.rb:87:in `block in executeEvents' 
    70219770058060  /home/ubuntu/env/test/www/yanpyapi-test/app/models/secretary.rb:20:in `each' 
    70219770058060  /home/ubuntu/env/test/www/yanpyapi-test/app/models/secretary.rb:20:in `executeEvents' 
    70219770058060  /home/ubuntu/env/test/www/yanpyapi-test/config/initializers/task_scheduler.rb:9:in `block in <top (required)>' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `call' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `do_trigger' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:269:in `block (3 levels) in start_work_thread' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `call' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `block (2 levels) in start_work_thread' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `loop' 
    70219770058060  /home/ubuntu/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `block in start_work_thread' 
} 70219770058060 . 

ответ

5

Похоже, что это работает, просто изменив конфигурацию порта SMTP в моем приложении Rails. Я сменил порт на 587.

+1

Да, это правильное решение. EC2 имеет ограничение скорости исходящего порта 25, но не 587 (или любой другой порт). –

-2

обходной путь будет установить локальный сервер SMTP, который ваши рельсы приложение использует в качестве SMTP-сервера. Местный smtp-сервер будет передавать SES. Локальные smtp-серверы, такие как postfix, будут автоматически повторять попытку, если ретрансляция через ses не удалась, поэтому ваш код rails должен будет отправлять почту в очередь только один раз.

 Смежные вопросы

  • Нет связанных вопросов^_^