2014-01-06 4 views
3

У меня такая же проблема. Я использую Sendmail вариант и продолжать получать ошибкуНастройки для Devise :: Mailer - diaspora smtp_envelope_from и smtp_envelope_to sendmail

«SMTP-адрес отправителя должен послать сообщение. Установите сообщение smtp_envelope_from, return_path, отправитель, или адрес.»

Я протестировал почтовый жемчуг с консоли ruby ​​и отлично работает. AppConfig сообщает, что метод доставки - sendmail, а также сообщает, что sender_address точно указан в файле app/config/diaspora.yaml. Mail.delivery_method также возврат sendmail. Когда я установил @smtp_envelope_from = '[email protected]' в gems/mail-2.5.4/lib/mail/message.rb я получаю подобное еще другое сообщение об ошибке ..

«SMTP-адрес Для требуется, чтобы отправить сообщение. Установите сообщение smtp_envelope_to, чтобы, куб.см, или ОЦК адрес.»

эта ошибка возникает в lib/mail/check_delivery_params.rb:9:in check_delivery_params', я, таким образом, попытаться установить @smtp_envelope_to = '[email protected]' в message.rb, просто чтобы проверить это, как я знаю, что эти параметры должны быть применены в другом месте (эта нить, кажется, только я могу найти решение этой) ошибка я получаю после установки @smtp_envelope_to является

неопределенной methodmap»для "[email protected]": String

Я первоначально был обеспокоен тем, что delivery_method не был настроен правильно, но след показывает, что до того, как будет вызвана check_delivery_params, введите lib/mail/network/delivery_methods/sendmail.rb:50:in! так что это не так. Это стандартная версия, клонированная неделю назад. Использование RVM and ruby-1.9.3-p484. Я получаю те же ошибки в режиме производства и режиме разработки. Я использую стратегии, такие как grep -r подписи метода, чтобы помочь мне найти файлы и атрибуты, где они устанавливаются и инициализируются. У меня возникли проблемы с пониманием того, как configure устанавливает значения в AppConfig и точно как работает Devise::Mailer.

Моя самая большая инквизиция во всем этом, где в приложении диаспорой я призываю методы, чтобы установить smtp_envelope_from и smtp_envelope_to, что является стандартным способом установки их в диаспоре, и как я могу подтвердить, что они установлены. Я пытаюсь получить успешную почту для password_instructions. Кажется, что это осталось, чтобы придумать.

Пожалуйста, помогите, поскольку я давно искал решение. Я не готов отказаться от sendmail, так как это не обязательно проблема. Также в версии, в которой я работаю с config/initializers/devise.rb, нет атрибутов, упомянутых ранее, они кажутся автоматически установленными как-то, это полезно для разделения данных из логики, на самом деле немного раздражает, когда оно, похоже, не работает.

Далее: research Я выдаю следующие команды, чтобы увидеть, где указаны указанные атрибуты, и он не возвращает один файл, в котором они установлены, значениями, которые я ожидал бы от них, они инициализируются именно этим.

~ $ Grep -r smtp_envelope_from

.irb-истории: Почта.smtp_envelope_from

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params.rb: if mail.smtp_envelope_from.blank?

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params.rb: raise ArgumentError.new ('SMTP От адреса требуется для отправки установите сообщение smtp_envelope_from, return_path, отправитель или адрес. ')

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params. гь: [mail.smtp_envelope_from, mail.smtp_envelope_to, сообщение]

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почта/message.rb: @smtp_envelope_from = nil

.rvm/gems/ruby-1.9.3-p484 @ di aspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_from = 'Mikel'

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5 .4/lib/mail/message.rb: # mail.smtp_envelope_from # => '[email protected]'

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail- 2.5.4/lib/mail/message.rb: # mail.smtp_envelope_from 'Mikel'

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_from # => '[email protected]'

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail /сообщение. гь: Защита smtp_envelope_from (значение = ноль)

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почты/message.rb: self.smtp_envelope_from = значение

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_from || return_path || отправитель || from_addrs.first

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почта/message.rb: # mail.smtp_envelope_from = 'Микель'

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_from # => '[email protected]'

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почта/message.rb: Защита smtp_envelope_from = (значение)

.rvm/камни/рубин-1,9 .3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_from = val

Другая команда я бегу, чтобы увидеть, что я могу найти

~ $ Grep -r smtp_envelope_to

.rvm/драгоценные камни/рубиново-1.9.3-p484 @ диаспорскую/драгоценные камни/почта -2.5.4/lib/mail/check_delivery_params.rb: if mail.smtp_envelope_to.blank?

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params.rb: raise ArgumentError.new ('SMTP. Для адреса требуется отправить установите сообщение smtp_envelope_to, to, cc или адрес электронной почты. ')

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params. rb: [mail.smtp_envelope_from, mail.smtp_envelope_to, сообщение]

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почты/message.rb: @smtp_envelope_to = ноль

.rvm/gems/[email protected]/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to = 'Mikel'

.rvm/gems/ruby-1.9.3 [email protected]/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to # => '[email protected]'

.rvm/gems/ruby-1.9. [email protected]/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to ['Mikel', 'Lindsaar']

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to # => [[email protected] ',' [email protected] ']

.rvm/gems/ruby-1.9.3-p484 @ diaspora/gems/mail-2.5.4/lib/mail/message.rb: def smtp_envelope_to (вал = ноль)

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почты/message.rb: self.smtp_envelope_to = значение

.rvm /gems/[email protected]/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_to || направления

.rvm/драгоценные камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почты/message.rb: # mail.smtp_envelope_to = 'Микель'

.rvm /gems/[email protected]/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to # => '[email protected]'

. rvm/gems/[email protected]/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to = ['Mikel', 'Lindsaar']

.rvm /gems/[email protected]/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to # => ['[email protected]aar.net', 'lindsaar @ test.l indsaar.net '] .rvm/камни/рубин-1.9.3-p484 @ диаспора/драгоценные камни/почты 2.5.4/Библиотека/почта/message.rb: Защита smtp_envelope_to = (значение)

.rvm/gems/[email protected]/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_to =

Grep: aquota.user: отказано в

диаспорой/журнал /development.log:ArgumentError (для отправки сообщения требуется адрес SMTP. Установите сообщение smtp_envelope_to, to, cc или адрес адресной почты.):

diaspora/log/development.log: ArgumentError (SMTP) Для отправки сообщения необходимо отправить сообщение: smtp_envelope_to, to, cc или ОЦК-адрес):.

Grep: потерял + найдено: отказано в

Как вы можете видеть, что эти параметры инициализируются в mail/lib/mail/message.rb, но не даны соответствующие значения нигде. Возможно ли, что методы могут иметь псевдоним или быть каким-то образом установлены, что я не смог бы найти их, используя эту технику? Возможно ли, что actionmailer и mail в ruby-1.9.3-p848 имеют более новые требования или изменения, которые не поддерживает диаспора? (в вики-версии указано, как использовать эту версию.) config/diaspora.yaml позволяет мне указать значение по умолчанию из адреса, но адрес должен быть установлен в почтовом блоке, если я не ошибаюсь

Тем не менее в недоумении по этому вопросу, пожалуйста, помогите

Однако дальнейшее тестирование в ответ на ошибку

неопределенная methodmap»для "[email protected]": String

lib/mail/check_delivery_params.rb:9:in check_delivery_params' ожидал массив поэтому я @smptp_envelope_to = ['[email protected] m '] в gems/mail-2.5.4/lib/mail/message.rb, и письмо было успешным при запросе пароля_reset_instructions, но содержимое в письме было пустым. Теперь рассматривая проблему где-то в ~/diaspora/app/mailers/diaspora_devise_mailer.rb или ~/.rvm/gems/[email protected]/gems/devise-3.0.2/app/mailers/devise/mailer.rb, когда я кошка последний Упоминаются файл я получаю

> class Devise::Mailer < Devise.parent_mailer.constantize 
>> include Devise::Mailers::Helpers 
>> 
>> def confirmation_instructions(record, opts={}) 
>>> devise_mail(record, :confirmation_instructions, opts) 
>> end 

>> def reset_password_instructions(record, opts={}) 
>>> devise_mail(record, :reset_password_instructions, opts) 
>> end 

>> def unlock_instructions(record, opts={}) 
>>> devise_mail(record, :unlock_instructions, opts) 
>> end 
> end 

Я сейчас работаю мой путь через контроллеры в devise/app на данный момент я считаю, что проблема с завещанию. Хеширование над howto на почтовых программах в рубине должно помочь мне найти эту проблему. Блок сообщений должен быть создан где-то, но его местоположение не является очевидным. Если кто-нибудь может указать мне нужное место для создания блока сообщений, я сделаю небольшой танец победы или нет.

Я также хочу отметить только запись в ~/диаспорой/Config/routes.rb, касающуюся этого

> # This is a hack to overide a route created by devise. 
> # I couldn't find anything in devise to skip that route, see Bug #961 
> match 'users/edit' => redirect('/user/edit') 
> 
> devise_for :users, :controllers => {:registrations => "registrations", 
>          :password  => "devise/passwords", 
>          :sessions  => "sessions"} 

Мне интересно, если я не должен смотреть на эту ошибку в диаспоре

Это было магически исправлено путем повторного клонирования диаспоры из github. Это была более новая версия, которая также требовала новой версии ruby. Прошел через стандартный процесс, и все работает. Спасибо, что посмотрели на это. Я все еще собираюсь продолжать копать, посмотреть, что по-другому и прочее

ответ

0

Это решение было разрешено путем клонирования обновленной версии диаспоры. Проблема заключалась в том, что более новая версия Devise :: Mailer сломала диаспору.