[英]Settings for Devise::Mailer - diaspora smtp_envelope_from and smtp_envelope_to sendmail
I am having a similar problem. 我有个类似的问题。 I am using the sendmail option and continue to get the error
我正在使用sendmail选项并继续得到错误
"An SMTP From address is required to send a message. Set the message smtp_envelope_from, return_path, sender, or from address."
“发送邮件需要SMTP发件人地址。设置邮件smtp_envelope_from,return_path,sender或from address。”
I have tested the Mail gem from the ruby console and it works perfect. 我已经从ruby控制台测试了Mail gem,它完美无缺。 AppConfig reports that delivery method is sendmail and also reports that
sender_address
is exactly as entered in the app/config/diaspora.yaml
file. AppConfig报告传递方法是sendmail,并且还报告
sender_address
与app/config/diaspora.yaml
文件中输入的完全相同。 Mail.delivery_method
also returns sendmail. Mail.delivery_method
也返回sendmail。 When I set @smtp_envelope_from = 'myemail@example.com'
in gems/mail-2.5.4/lib/mail/message.rb
I get a similar yet different error message.. 当我在
gems/mail-2.5.4/lib/mail/message.rb
设置@smtp_envelope_from = 'myemail@example.com'
,我收到类似但不同的错误消息。
"An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address."
“发送邮件需要SMTP地址。设置消息smtp_envelope_to,to,cc或bcc地址。”
this error comes up in lib/mail/check_delivery_params.rb:9:in check_delivery_params'
, I thus attempt to set the @smtp_envelope_to = 'myrecipient@example.com'
in message.rb
, just to test this as I know these settings should be applied somewhere else (this thread seems to be the only I can find addressing this) the error I receive after setting the @smtp_envelope_to
is 这个错误出现在
lib/mail/check_delivery_params.rb:9:in check_delivery_params'
,我因此尝试在message.rb
设置@smtp_envelope_to = 'myrecipient@example.com'
,只是为了测试它,因为我知道这些设置应该在其他地方应用(这个线程似乎是我能找到的唯一解决此问题)我在设置@smtp_envelope_to
后收到的错误是
undefined methodmap' for "myrecipient@example.com":String
undefined methodmap'for“myrecipient@example.com”:String
I was originally concerned that the delivery_method
wasn't being set right but the trace shows that before check_delivery_params is called I enter lib/mail/network/delivery_methods/sendmail.rb:50:in
deliver!' 我最初担心的是
delivery_method
没有正确设置,但跟踪显示在调用check_delivery_params之前我输入了lib/mail/network/delivery_methods/sendmail.rb:50:in
deliver!' so that is not the case. 所以情况并非如此。 This is a standard install cloned a week or so ago.
这是一周前克隆的标准安装。 Using
RVM and ruby-1.9.3-p484
. 使用
RVM and ruby-1.9.3-p484
。 I get the same errors in production mode and development mode. 我在生产模式和开发模式中遇到相同的错误。 I am using strategies like
grep -r
method signature to help me find files and attributes where they are being set and initialized. 我正在使用像
grep -r
方法签名这样的策略来帮助我找到设置和初始化它们的文件和属性。 I am having trouble understanding how configurate sets the values in AppConfig
and exactly how Devise::Mailer
works. 我无法理解Configurate如何设置
AppConfig
的值以及Devise::Mailer
工作原理。
My greatest inquisition in all of this is where in the diaspora application do I call the methods to set smtp_envelope_from
and smtp_envelope_to
, what is the standard way of setting these in diaspora, and how do I confirm they are set. 我最大的调查是在散居地应用程序中我将调用方法设置为
smtp_envelope_from
和smtp_envelope_to
,在散居中设置这些的标准方法是什么,以及如何确认它们已设置。 I am trying to acquire a succesfull mail for password_instructions
. 我正在尝试获取
password_instructions
的成功邮件。 It seems this is left up to devise to handle. 这似乎是由设计处理。
Please help as I have been hunting around for the solution for some time. 请帮忙,因为我一直在寻找解决方案一段时间。 I am not ready to give up on
sendmail
as that is not necessarily the problem. 我不准备放弃
sendmail
因为这不一定是问题。 Also in the version I am working with config/initializers/devise.rb
does not have the attributes mentioned previously, they seem to be automatically set somehow, this however good for separating data from logic is actually a little annoying when it doesn't seem to be working. 同样在我使用
config/initializers/devise.rb
中没有前面提到的属性,它们似乎是以某种方式自动设置,这对于从逻辑中分离数据config/initializers/devise.rb
但实际上有点烦人工作。
Further: research I issue the following commands to see where the attributes in question are set and it does not return a single file where they are set to the values I would expect them to be, they are initialized thats it. 进一步:研究我发出以下命令来查看有问题的属性的设置位置,并且它不返回单个文件,它们被设置为我期望它们的值,它们被初始化为它。
~$ grep -r smtp_envelope_from
〜$ grep -r smtp_envelope_from
.irb-history:Mail.smtp_envelope_from
.irb历史:Mail.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: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('An SMTP From address is required to send a message. Set the message smtp_envelope_from, return_path, sender, or from address.')
.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,sender或from address。')
.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, message]
.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,message]
.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:@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 = 'Mikel '
.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 #=> '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#=>'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 'Mikel '
.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 #=> '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#=>'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: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: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 ||
.rvm / gems / ruby-1.9.3-p484 @ diaspora / gems / mail-2.5.4 / lib / mail / message.rb:@smtp_envelope_from || return_path ||
return_path || sender ||
发件人|| from_addrs.first
from_addrs.first
.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 ='Mikel'
.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#=>'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: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
.rvm / gems / ruby-1.9.3-p484 @ diaspora / gems / mail-2.5.4 / lib / mail / message.rb:@smtp_envelope_from = val
The other command I run to see what I can find 我跑的另一个命令,看看我能找到什么
~$ grep -r smtp_envelope_to
〜$ grep -r smtp_envelope_to
.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-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: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('An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.')
.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或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, message]
.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,message]
.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:@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 = 'Mikel '
.rvm / gems / ruby-1.9.3-p484 @ diaspora / gems / mail-2.5.4 / lib / mail / message.rb:#mail.smtp_envelope_to ='Mikel'
.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@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','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:#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: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: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:@smtp_envelope_to || destinations
目的地
.rvm/gems/ruby-1.9.3-p484@diaspora/gems/mail-2.5.4/lib/mail/message.rb: # mail.smtp_envelope_to = 'Mikel '
.rvm / gems / ruby-1.9.3-p484 @ diaspora / gems / mail-2.5.4 / lib / mail / message.rb:#mail.smtp_envelope_to ='Mikel'
.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@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','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:#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 =
.rvm / gems / ruby-1.9.3-p484 @ diaspora / gems / mail-2.5.4 / lib / mail / message.rb:@smtp_envelope_to =
grep: aquota.user: Permission denied
grep:aquota.user:权限被拒绝
diaspora/log/development.log:ArgumentError (An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.):
diaspora / log / development.log:ArgumentError(发送消息需要SMTP地址。设置消息smtp_envelope_to,to,cc或bcc地址。):
diaspora/log/development.log:ArgumentError (An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.):
diaspora / log / development.log:ArgumentError(发送消息需要SMTP地址。设置消息smtp_envelope_to,to,cc或bcc地址。):
grep: lost+found: Permission denied
grep:lost + found:权限被拒绝
As you can see these settings are initialized in mail/lib/mail/message.rb
but are not given appropriate values anywhere else. 正如您所看到的,这些设置在
mail/lib/mail/message.rb
中初始化,但在其他任何地方都没有给出适当的值。 Is it possible the methods could have an alias name or be set somehow that I could not find them using this technique? 这些方法是否有可能具有别名或以某种方式设置我无法使用此技术找到它们? Is it possible the
actionmailer
and mail
in ruby-1.9.3-p848
have newer requirements or changes that diaspora doesn't support? 是否有可能在
actionmailer
和mail
中的ruby-1.9.3-p848
有新的要求,或者更改的流散不支持? (the installation wiki says specifically to use this version.) The config/diaspora.yaml
allows me to specify the default from address but the to address should be set in the mail block if I am not mistaken (安装wiki专门用来使用这个版本。)
config/diaspora.yaml
允许我从地址指定默认值,但是如果我没有弄错的话,应该在邮件块中设置to地址
Still at a loss on this please help 仍然不知所措请帮忙
Yet further testing in response to error 然后进一步测试以回应错误
undefined methodmap' for "myrecipient@example.com":String
undefined methodmap'for“myrecipient@example.com”:String
lib/mail/check_delivery_params.rb:9:in check_delivery_params'
was expecting an array so I set @smptp_envelope_to = ['myreciepient@example.com'] in gems/mail-2.5.4/lib/mail/message.rb
and the email was a success when requesting the password_reset_instructions, but the content in the email was empty. lib/mail/check_delivery_params.rb:9:in check_delivery_params'
期待一个数组,所以我在gems/mail-2.5.4/lib/mail/message.rb
设置@smptp_envelope_to = ['myreciepient@example.com']请求password_reset_instructions时,电子邮件是成功的,但电子邮件中的内容为空。 Now considering a problem somewhere in ~/diaspora/app/mailers/diaspora_devise_mailer.rb
or ~/.rvm/gems/ruby-1.9.3-p484@diaspora/gems/devise-3.0.2/app/mailers/devise/mailer.rb
when I cat the last mentioned file I get 现在考虑
~/diaspora/app/mailers/diaspora_devise_mailer.rb
或~/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
~/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
~/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
~/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
~/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
~/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
~/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
当我~/.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
I am now working my way through the controllers in the devise/app
at this point I believe the problem is with devise. 我现在正在通过
devise/app
中的控制器工作,此时我认为问题在于设计。 Hashing over the howto's on mailers in ruby should help me locate this problem. 在ruby中对mailer上的howto进行哈希应该可以帮助我找到这个问题。 A message block must be created somewhere but it's location is not obvious.
必须在某处创建一个消息块,但它的位置并不明显。 If anyone can point me to the right place to create the message block I will do a small victory dance or not.
如果有人能指出我在正确的地方创建消息块,我会做一个小小的胜利舞蹈。
I also want to note the only entry in ~/diaspora/config/routes.rb relating to this is 我还要注意〜/ 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"}
I am curious if I shouldn't take a look at this bug in diaspora 我很好奇,如果我不应该看一看侨民中的这个错误
This has been magically fixed by cloning diaspora from github again. 通过再次从github克隆侨民已经神奇地修复了这个问题。 It was a newer version that also required a newer version of ruby.
这是一个较新的版本,也需要更新版本的ruby。 Went through the standard process and everything works.
通过标准流程,一切正常。 Thank you for looking at this.
谢谢你看这个。 I am still going to keep digging, see whats different and stuff
我仍然会继续挖掘,看看有什么不同的东西
This was resolved by cloning an updated version of diaspora. 通过克隆更新版本的侨民来解决这个问题。 The issue appeared to be that a newer version of Devise::Mailer broke diaspora.
问题似乎是Devise :: Mailer的新版本打破了侨民。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.