Rails 3 ActionMailer附件由Yahoo!错误地显示内联邮件

时间:2011-02-21 05:08:14

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

我正在使用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): -

gmaill look

修改

在雅虎经典中工作。

Working in yahoo classic

在新雅虎不工作: -

enter image description here

2 个答案:

答案 0 :(得分: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 
 }

感谢您的澄清,不幸的是这个问题我没有比“告诉雅虎”更好的回答,这没有任何帮助。

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

<强>成功

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

<强>故障

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

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

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

顺便说一下,这个问题也会影响我的应用,所以我会继续考虑让我们尝试的东西。

答案 1 :(得分:1)

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

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

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

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

希望它有所帮助,这么晚。