【问题标题】:Rails 3 ActionMailer attachments incorrectly shown inline by Yahoo! MailRails 3 ActionMailer 附件被 Yahoo! 错误地显示为内联邮件
【发布时间】:2011-07-01 01:21:56
【问题描述】:

我正在使用 ri_cal gem 生成 ics 文件。

在我的邮件中:--

def appointment_book(appointment,recipient,appointment_with)
  event = RiCal.Event do
    description "MA-6 First US Manned Spaceflight"
    dtstart     DateTime.parse(appointment.slot.date_on.strftime("%m/%d/%Y").to_s + " " + appointment.slot.start_time.strftime("%I.%M %p").to_s)
    dtend       DateTime.parse(appointment.slot.date_on.strftime("%m/%d/%Y").to_s + " " + appointment.slot.end_time.strftime("%I.%M %p").to_s)
    add_attendee appointment_with.full_name
    alarm do
      description "Segment 51"
    end
  end
  attachments['event.ics'] = { 
   :mime_type => 'text/calendar', 
   :content => event.export 
   }

  @recipient = recipient
  @appointment = appointment
  mail(:to => recipient.email, :subject => "Appointment book")
end

在 appintment_book.text.erb 文件中

  (some simple variable values or plain text.)

问题是(在雅虎,特别是较新的版本。我在编辑部分添加截图):--

附件是有邮件的,但是除了gmail的邮件内容外,还有一些vcard和其他内容。如果我删除 ics_generation 代码,那么它就消失了。请查看截图

在 gmail 中它看起来像(也在处理 hotmail):--

编辑

在 yahoo Classic 中工作。

不适用于新雅虎:--

【问题讨论】:

  • 在我的测试中,这个问题不仅限于 ICS 文件;来自 Rails 的 VCF 和纯文本文件在 Yahoo! 中引起了同样的问题。邮件。

标签: ruby-on-rails email ruby-on-rails-3 yahoo icalendar


【解决方案1】:

我有点不确定您要展示和询问的内容。假设第一个屏幕截图是一个未命名的邮件客户端错误地显示了 icalendar 数据而不是将其作为附件,并且您想要修复它,那么我建议您指定 mime 类型,如

 attachments['event.ics'] = { 
   :mime_type => 'text/calendar', 
   :content => event.export 
 }

我不能说这是否会帮助邮件客户端和/或日历数据,但它对大多数客户端中的 vCard 附件有用,如下所示:

 attachments['card.vcs'] = { 
   :mime_type => 'text/x-vcard', 
   :content => person.to_vcf 
 }

感谢您的澄清,不幸的是那个问题我没有比“告诉雅虎”更好的答案了。

我从几个不同的来源向 Yahoo 邮件发送了附件,我尝试了不同的内容类型、传输编码(例如 Base64)、不同类型的附件等。我可以在 Yahoo 正确显示的那些和那些它失败的原因是成功使用参数折叠,例如,

成功

Content-Disposition: attachment; filename="event.ics"

失败

Content-Disposition: attachment;
 filename="event.ics"

这个(正确的)折叠似乎是硬连线到 Rails 使用的mail gem 中,我没有尝试另一种真正隔离它的方法;如果这真的是问题,我不得不说我会感到惊讶。

无论如何,雅虎将非内联附件呈现为内联,所以如果这对您的客户群来说是一个重大问题,我会直接与雅虎接洽;也许他们会修复它或为您提供有关触发它的更具体的陈述,以便您可以解决它。对于它的价值,雅虎确实允许用户正确访问附件,因为它应该使用“附件”的 Content-Disposition;它只是将它显示为“内联”的处置。

顺便说一句,这个问题也影响了我的应用程序,所以我会继续考虑让我们尝试的事情。

【讨论】:

  • 另外请再次检查。更新了问题。
  • @piemesons:我更新了我的答案,或者更确切地说,表明我对澄清的问题没有正确的答案。
  • :-(.. 无论如何,非常感谢。50+ 为你 :-) 如果您遇到任何解决方案。请告诉我。
【解决方案2】:

此问题仅与 Yahoo! 有关邮件。雅虎真可惜! Mail 不管理 Yahoo! 中的 iCalendar 事件日历呢,2011 年!

现在至少事件在“新”Yahoo! 中作为 ICS 附件提供。邮件,您可以手动管理邀请。也许雅虎!经典过去做过。我会检查并考虑可能恢复。

这是人们继续使用 Yahoo! 的唯一解决方案网络邮件服务。当然有雅虎!由 POP3 电子邮件客户端管理的邮件帐户确实可以正确管理 iCalendars 事件:任何附加的 ICS 文件都会显示为会议邀请,您可以像往常一样通过电子邮件客户端进行管理。

看看这里,在 Yahoo!开发者网:http://developer.yahoo.com/forum/General-Discussion-at-YDN/Problem-opening-ICS-files-from-Yahoo/1299668671000-24ed7a59-019f-3f1b-b596-70ab34db783c

希望对你有帮助,这么晚了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 2014-01-15
    • 2011-07-24
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多