【问题标题】:ActionMailer - limit on number of recipients?ActionMailer - 收件人数量限制?
【发布时间】:2011-12-21 13:13:56
【问题描述】:

我已将 Capistrano 设置为在部署我的 RoR (2.3.8) 应用程序后发送电子邮件。我有一个config/cap_mailer.rb 文件,基本上看起来像:

ActionMailer::Base.smtp_settings = {
  :address => my,
  :port => exchange,
  :domain => server,
  :authentication => settings,
  :user_name => are,
  :password => here
}

class CapMailer < ActionMailer::Base
  def deploy_notification(cap_vars)
    recipients  cap_vars[:notify_emails]
    from        'deploy@my.org'
    subject     "New app!"
    body        "Deployed application...blah blah blah"
  end
end

然后,在我的deploy.rb 文件中,我有以下内容:

require 'config/cap_mailer.rb'
...
desc "Email recipients of deployment"
task :notify do
  puts "  * Sending notification email"
  set :notify_emails, ["test1@my.org", "test2@my.org", etc.]
  CapMailer.deliver_deploy_notification(self)
end

现在这一切都很好而且花花公子......直到我在 :notify_emails 数组中放置了超过 7 个电子邮件地址。最多 7 个可以正常工作,但是当我输入 8 个或更多(所有有效地址)时,电子邮件会有点混乱(至少仍然会通过前 7 个)。查看电子邮件标题,它显示它正在从“收件人:”中截取第 8 个(以及第 9 个、第 10 个......)地址并将其放入邮件正文中。

标题:
线程索引:AcyaZxlga08L9p35QYKJ22aiGG2zeA==
内容类:urn:content-classes:message
重要性:正常
优先级:正常
X-MimeOLE:由...制作
收到:来自 exchange.my.org ([ip address]) by ...; 2011 年 11 月 3 日星期四 14:28:08 -0600
日期:2011 年 11 月 3 日星期四 14:28:08 -0600
来自:deploy@my.org
致:test1@my.org,
test2@my.org,
test3@my.org,
test4@my.org,
test5@my.org,
test6@my.org,
test7@my.org
标题:

身体:
test8@my.org
消息 ID:

主题:新应用!
Mime 版本:1.0
内容类型:文本/纯文本;字符集=utf-8
返回路径:deploy@my.org
X-OriginalArrivalTime:2011 年 11 月 3 日 20:28:08.0494 (UTC)
文件时间=[19601CE0:01CC9A67]

已部署的应用程序...等等等等
身体:

此外,主题不会出现在电子邮件中,即使邮件正文中的“错误文本”显示了正确的主题。

有人知道为什么会这样吗?有 8 个或更多收件人会破坏它是什么意思?我在 Google 上四处搜索,找不到任何关于 ActionMailer 对收件人数量有限制的信息(即使有,那也是一个很小的限制)。有什么我想念的吗?任何帮助表示赞赏!我真的需要能够发送给 8 个或更多收件人。

更新:直接使用包含 8 个或更多地址的数组设置 recipients 仍然会造成问题,因此这显然是 ActionMailer 而非 Capistrano 的问题。

recipients ["test1@my.org", "test2@my.org", "test3@my.org", "test4@my.org", 
  "test5@my.org", "test6@my.org", "test7@my.org", "test8@my.org", "test9@my.org"]

【问题讨论】:

  • 我们的交换邮件服务器时常遇到类似的问题。 Exchange 在此过程中重写消息的标头和 foobars。您应该尝试使用另一个邮件服务器,看看会发生什么。
  • @Unixmonkey - 不幸的是,我无法更改邮件服务器(至少对于生产而言)。您认为这可能与这个Prawn/IE 问题有关吗?那里提供的解决方案适用于我的 Rails 应用程序,所以我想知道明确指定邮件标题是否会类似地解决这个问题。

标签: ruby-on-rails capistrano actionmailer


【解决方案1】:

第 7 个电子邮件地址后面没有逗号,这可能是问题所在。尝试将字符串传递给recipients,例如cap_vars[:notify_emails].join(','),不带换行符。

【讨论】:

  • 但我没有创建逗号分隔的列表或使用换行符做任何事情。我只是将 :notify_emails 数组传递给 recipients,ActionMailer 将完成剩下的工作。我不知道它如何未能创建正确的 To: 字符串。不过我会试一试,看看会发生什么。
  • 您可以通过查看与您的邮件服务器的 smtp 对话来弄清楚。在 ActionMailer 设置中传递 :debug =&gt; true
【解决方案2】:

尝试将字符串传递给不带逗号的收件人(有报告称逗号存在问题),例如:

cap_vars[:notify_emails].join(' ')

【讨论】:

  • 这里是一个例子:ruby-forum.com/topic/151792 但是......我更认为它是你的实际服务器。我建议至少尝试一下。您是否为此应用程序使用特定的服务器/托管解决方案?这是什么?
  • 是的,这表示传递逗号分隔的字符串不起作用,但并不意味着空格会起作用。 Rails 文档说一个单一的字符串地址,或者一个字符串地址数组。我会试试看,但我怀疑它会起作用。与原始帖子的两个 cmets 一样,我认为这与 Exchange(公司服务器)有关。我认为以某种方式调整标题可能会像在 IE 中打印虾一样起作用。但我不知道从哪里开始解决这个问题。
  • 谁管理您的交换服务器?让他们检查全局、用户和互联网用户设置的收件人最大值作为交换:technet.microsoft.com/en-us/library/aa996677(EXCHG.80).aspx 我认为你是对的,与 actionmailer 或 capistrano 无关。
【解决方案3】:

在调试困难错误时可能会忽略一些简单的事情:

  1. 如果它的邮件服务器相关安装在另一个生产服务器上?如果您不确定是邮件服务器在寻找另一个错误可能没有帮助。
  2. 尝试升级 rails / ruby​​ 吗?可能是代码中的错误

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多