3

私は同様の問題を抱えています。sendmail オプションを使用していますが、引き続きエラーが発生します

「メッセージを送信するには、SMTP From アドレスが必要です。メッセージの smtp_envelope_from、return_path、sender、または from アドレスを設定してください。」

Ruby コンソールから Mail gem をテストしましたが、完璧に動作します。sender_addressAppConfig は、配信方法が sendmail であることを報告し、ファイルに入力されたとおりであることも報告しapp/config/diaspora.yamlます。Mail.delivery_methodsendmail も返します。設定@smtp_envelope_from = 'myemail@example.com'するgems/mail-2.5.4/lib/mail/message.rbと、同様であるが異なるエラーメッセージが表示されます..

「メッセージを送信するには SMTP To アドレスが必要です。メッセージの smtp_envelope_to、to、cc、または bcc アドレスを設定してください。」

このエラーが で発生したため、 inlib/mail/check_delivery_params.rb:9:in check_delivery_params'を設定しようとしましたが、これらの設定を別の場所に適用する必要があることがわかっているため、これをテストするだけです (このスレッドは、これに対処することができる唯一のスレッドのようです) を設定した後に受け取るエラーは@smtp_envelope_to = 'myrecipient@example.com'message.rb@smtp_envelope_to

"myrecipient@example.com" の undefined methodmap':String

最初は が正しく設定されていないのではないかと心配していましたdelivery_methodが、トレースでは、check_delivery_params が呼び出される前に、delivery に入ることが示されていますlib/mail/network/delivery_methods/sendmail.rb:50:in。そうではありません。これは、1 週間ほど前に複製された標準インストールです。を使用しRVM and ruby-1.9.3-p484ます。プロダクション モードと開発モードで同じエラーが発生します。メソッド署名のような戦略を使用しgrep -rて、設定および初期化されているファイルと属性を見つけやすくしています。configurate が値を設定する方法AppConfig と、正確にどのように機能するかを理解するのに苦労していますDevise::Mailer

これに関する私の最大の疑問は、ディアスポラ アプリケーションのどこで setsmtp_envelope_fromおよびのメソッドを呼び出すsmtp_envelope_toか、ディアスポラでこれらを設定する標準的な方法は何か、それらが設定されていることをどのように確認するかということです。の成功メールを取得しようとしていpassword_instructionsます。これは工夫次第のようです。

しばらくの間、解決策を探していたので、助けてください。sendmailそれが必ずしも問題ではないので、私はあきらめる準備ができていません. また、私が使用しているバージョンにはconfig/initializers/devise.rb、前述の属性がありません。何らかの形で自動的に設定されているように見えますが、これはロジックからデータを分離するのに適していますが、実際には機能していないように見えるときは少し面倒です。

さらに: 調査 次のコマンドを発行して、問題の属性が設定されている場所を確認しましたが、期待される値に設定されている単一のファイルが返されず、初期化されています。

~$ grep -r smtp_envelope_from

.irb-history:Mail.smtp_envelope_from

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params.rb: 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 From アドレスが必要です。メッセージ smtp_envelope_from、return_path、sender、または from アドレス。')

.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/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_from = nil

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/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 #=> 'mikel@test.lindsaar.net'

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/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 #=> 'mikel@test.lindsaar.net'

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: def smtp_envelope_from( val = nil )

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: self.smtp_envelope_from = val

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_from || リターンパス || || 送信者 || from_addrs.first

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/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 #=> 'mikel@test.lindsaar.net'

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: def smtp_envelope_from=( val )

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_from = val

何が見つかるかを確認するために実行する他のコマンド

~$ grep -r smtp_envelope_to

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/check_delivery_params.rb: 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 To アドレスが必要です。メッセージ smtp_envelope_to、to、cc、または bcc アドレス。')

.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/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_to = nil

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to = 'マイケル'

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to #=> 'mikel@test.lindsaar.net'

.rvm/gems/ruby-1.9.3-p484@diaspora/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 #=> ['mikel@test.lindsaar.net', ' lindsaar@test.lindsaar.net']

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: def smtp_envelope_to( val = nil )

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: self.smtp_envelope_to = val

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_to || 行き先

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to = 'マイケル'

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to #=> 'mikel@test.lindsaar.net'

.rvm/gems/ruby-1.9.3-p484@diaspora/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 #=> ['mikel@test.lindsaar.net', ' lindsaar@test.lindsaar.net'] .rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: def smtp_envelope_to=( val )

.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: @smtp_envelope_to =

grep: aquota.user: 権限が拒否されました

diaspora/log/development.log:ArgumentError (メッセージを送信するには SMTP To アドレスが必要です。メッセージの smtp_envelope_to、to、cc、または bcc アドレスを設定してください。):

diaspora/log/development.log:ArgumentError (メッセージを送信するには SMTP To アドレスが必要です。メッセージの smtp_envelope_to、to、cc、または bcc アドレスを設定してください。):

grep: lost+found: 権限が拒否されました

ご覧のとおり、これらの設定は で初期化されていますがmail/lib/mail/message.rb、他の場所では適切な値が与えられていません。メソッドにエイリアス名が付いているか、この手法を使用してメソッドを見つけることができなかった何らかの方法で設定されている可能性はありますか? ディアスポラがサポートしていない新しい要件や変更がある可能性はactionmailerありますか? (インストール wiki では、特にこのバージョンを使用するように指示されています。)では、デフォルトの送信元アドレスを指定できますが、間違っていなければ、送信先アドレスをメール ブロックに設定する必要があります。mailruby-1.9.3-p848config/diaspora.yaml

これについてはまだ途方に暮れています助けてください

エラーに応じてさらにテストを行う

"myrecipient@example.com" の undefined methodmap':String

lib/mail/check_delivery_params.rb:9:in check_delivery_params'配列を期待していたので、@smptp_envelope_to = ['myreciepient@example.com'] を設定gems/mail-2.5.4/lib/mail/message.rbし、password_reset_instructions を要求したときに電子メールは成功しましたが、電子メールの内容は空でした。今、どこかで、または最後に言及されたファイルを猫にするときに問題を検討して~/diaspora/app/mailers/diaspora_devise_mailer.rb~/.rvm/gems/ruby-1.9.3-p484@diaspora/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この時点で問題がデバイスにあると信じています。Ruby のメーラーのハウツーをハッシュすると、この問題を特定するのに役立ちます。メッセージ ブロックはどこかに作成する必要がありますが、その場所は明らかではありません。メッセージ ブロックを作成する適切な場所を教えてくれる人がいれば、ちょっとした勝利のダンスをするかどうかを決めます。

また、これに関連する ~/diaspora/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 から diaspora を再度複製することで、魔法のように修正されました。これは、新しいバージョンの ruby​​ も必要とする新しいバージョンでした。標準プロセスを経て、すべてが機能します。ご覧いただきありがとうございます。私はまだ掘り続けて、何が違うのかを見ていきます

4

1 に答える 1