gpt4 book ai didi

devise - Devise::Mailer的设置-散居者smtp_envelope_from和smtp_envelope_to sendmail

转载 作者:行者123 更新时间:2023-12-02 09:06:46 25 4
gpt4 key购买 nike

我有个类似的问题。我正在使用sendmail选项,并继续出现错误


“发送邮件需要使用SMTP发件人地址。设置邮件
smtp_envelope_from,return_path,发件人或地址。”


我已经从ruby控制台测试了Mail gem,它可以完美工作。 AppConfig报告该传递方法是sendmail,还报告sender_addressapp/config/diaspora.yaml文件中输入的完全相同。 Mail.delivery_method还返回sendmail。当我在@smtp_envelope_from = 'myemail@example.com'中设置gems/mail-2.5.4/lib/mail/message.rb时,会收到类似但不同的错误消息。


“发送邮件需要SMTP To地址。设置邮件
smtp_envelope_to,收件人,抄送或密件抄送地址。”


此错误出现在lib/mail/check_delivery_params.rb:9:in check_delivery_params'中,因此我尝试在@smtp_envelope_to = 'myrecipient@example.com'中设置message.rb,只是为了进行测试,因为我知道这些设置应该应用于其他地方(该线程似乎是我唯一可以解决的问题)设置@smtp_envelope_to后收到的错误是


“ myrecipient@example.com”的未定义方法映射:字符串


我最初担心delivery_method设置不正确,但是跟踪显示,在调用check_delivery_params之前,我输入了lib/mail/network/delivery_methods/sendmail.rb:50:in deliver!”所以事实并非如此。这是一周左右前克隆的标准安装。使用RVM and ruby-1.9.3-p484。在生产模式和开发模式下,我遇到相同的错误。我正在使用诸如grep -r方法签名之类的策略来帮助我查找要设置和初始化它们的文件和属性。我无法理解如何配置设置AppConfig中的值
以及Devise::Mailer的工作原理。

在这所有方面,我最大的疑问是我在diaspora应用程序中调用了设置smtp_envelope_fromsmtp_envelope_to的方法,在diaspora中设置这些方法的标准方法是什么,以及如何确认它们已被设置。我正在尝试为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发件人地址。邮件smtp_envelope_from,return_path,发件人或地址。”)

.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 ='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'

.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 || return_path ||发件人|| 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@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,收件人,抄送或密件抄送地址。”)

.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 ='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','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 ='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','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:丢失+找到:权限被拒绝


如您所见,这些设置已在mail/lib/mail/message.rb中初始化,但在其他任何地方均未获得适当的值。方法是否可能具有别名或以某种方式设置为使用该技术找不到它们? actionmailer中的mailruby-1.9.3-p848是否有散居者不支持的更新要求或更改? (安装Wiki专门说要使用此版本。)config/diaspora.yaml允许我指定默认的from地址,但是如果我没有记错的话,应该在邮件块中设置to地址。

对此仍然不知所措,请帮助

针对错误的进一步测试


“ myrecipient@example.com”的未定义方法映射:字符串


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时,电子邮件成功了,但是电子邮件中的内容为空。现在,当我得到最后提到的文件时,考虑在~/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邮件上的howto进行哈希处理应该可以帮助我找到此问题。必须在某处创建一个消息块,但是它的位置并不明显。如果有人可以将我指向正确的位置来创建消息块,那么我是否会进行一次小型胜利舞蹈。

我还想指出〜/ 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克隆了散居者,这已经神奇地解决了。这是较新的版本,也需要较新版本的ruby。通过标准流程,一切正常。感谢您的关注。我仍然会继续挖掘,看看有什么不同和东西

最佳答案

通过克隆侨民的更新版本来解决此问题。问题似乎是Devise :: Mailer的较新版本打破了散居者的境地。

关于devise - Devise::Mailer的设置-散居者smtp_envelope_from和smtp_envelope_to sendmail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com