После переключения моего приложения Rails 2.3 с MRI Ruby 1.8.7 на JRuby 1.6.5 приложение больше не может отправлять почту. Я использую ActionMailer следующим образом:Приложение Rails не отправляет почту (через sendmail) под JRuby
class MessageMailer < ActionMailer::Base
def message(msg, recipient, reply_to_email=nil)
template = (msg.message_type.nil?) ? "default" : msg.message_type.name.downcase.gsub(' ', '_')
recipients recipient
subject msg.subject
from (msg.sender.nil? or msg.sender.email.blank?) ? "\"no-reply\" <#{SYSTEM_EMAIL_ADDRESS}>" : msg.sender.email
content_type "text/html"
body render_message(template, :message => msg)
reply_to reply_to_email || ((msg.sender.nil? or msg.sender.email.blank?) ? "\"no-reply\" <#{SYSTEM_EMAIL_ADDRESS}>" : msg.sender.email)
end
...
end
MessageMailer.deliver_message(...)
Это, вероятно, не имеет значения, так как это работает под MRI Ruby 1.8.7.
приложение Rails настроен на использование Sendmail в конфигурации/сред/production.rb:
config.action_mailer.delivery_method = :sendmail
Более интересны Sendmail журналы (/var/log/mail.log):
# Sending mail under MRI Ruby 1.8.7
Jan 5 09:38:49 my sendmail[24755]: q05EcnCr024755: from=edwarda, size=310, class=0, nrcpts=1, msgid=<[email protected]>, [email protected]
Jan 5 09:38:49 my sm-mta[24757]: q05Ecn02024757: from=<[email protected]>, size=516, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Jan 5 09:38:49 my sendmail[24755]: q05EcnCr024755: [email protected], ctladdr=edwarda (1011/1012), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30310, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q05Ecn02024757 Message accepted for delivery)
Jan 5 09:38:49 my sm-mta[24759]: STARTTLS=client, relay=aspmx.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128
Jan 5 09:38:49 my sm-mta[24759]: q05Ecn02024757: to=<[email protected]>, ctladdr=<[email protected]> (1011/1012), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120516, relay=aspmx.l.google.com. [74.125.45.27], dsn=2.0.0, stat=Sent (OK 1325774329 o43si18661797yhk.140)
# Sending mail under JRuby 1.6.5
Jan 5 11:10:26 my sendmail[7623]: q05GAQkH007623: from=edwarda, size=199, class=0, nrcpts=0, [email protected]
Обратите внимание, что nrcpts (количество получателей) равно 0, когда я запускаю JRuby и 1 при запуске 1.8.7.
Я использую тот же код и драгоценные камни, за исключением того, я использую эти драгоценные камни в дополнении к JRuby:
gem 'activerecord-jdbc-adapter', '<= 1.2.0', :require => false
gem 'activerecord-jdbcpostgresql-adapter', '<= 1.2.0', :require => 'jdbc_adapter'
gem 'ffi-ncurses'
gem 'jruby-openssl'
gem 'torquebox', '2.0.0.beta1', :platforms => 'jruby'
gem 'torquebox-rake-support', :platforms => 'jruby'
gem 'torquebox-capistrano-support', '2.0.0.beta1'
В случае, если это полезно, это мой Gemfile.lock.
В моих журналах Rails нет интересного или необычного вывода; только обычные сообщения об успешности.
Редактировать: Я не могу воспроизвести эту проблему на моей машине разработки (OSX).
Любые мысли о том, почему получатели могут потеряться или как я могу устранить эту проблему?
ли JRuby работает в режиме 1.9 ? Какая версия рельсов? –
JRuby работает в режиме 1.8; Rails 2.3.14 –