我使用Django和python-icalendar生成iCalendar文件,它们在Outlook(2010)中正确显示为会议邀请.在Gmail(Google Apps)中,我只看到一封空白的电子邮件.这是怎么回事?这是我的.ics文件之一:
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-//My Events App//example.com//
VERSION:2.0
BEGIN:VEVENT
ATTENDEE;CN=Richard;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:rich@example.com
CREATED;VALUE=DATE:20101122T183813
DESCRIPTION:Phone number: (212)-123-4567\n\nThis is a test description
for the conference call.
DTEND;VALUE=DATE:20101127T131802Z
DTSTAMP;VALUE=DATE:20101127T121802Z
DTSTART;VALUE=DATE:20101127T121802Z
LAST-MODIFIED;VALUE=DATE:20101122T183813
ORGANIZER;CN=Example.com:events@example.com
SEQUENCE:1
SUMMARY:Conference call about GLD
UID:example.com.20
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
哦,我正在使用Django的EmailMultiAlternatives来附加ics内容,如下所示:
if calendar:
message.attach_alternative(calendar.as_string(), "text/calendar; method=REQUEST; charset=\"UTF-8\"")
message.content_subtype = 'calendar'
Run Code Online (Sandbox Code Playgroud) 我们的java应用程序使用ical4j生成ICalendar文件,并将它们作为HTML电子邮件通知的一部分发送给用户.几个用户(会议的组织者)报告会议的"接受","拒绝"等按钮显示为灰色,并且不可点击.会议未添加到组织者的日历中.
如何强制为管理器添加会议?
我暂时配置服务器以将.ics文件作为附件(而不是内联)发送,以便我可以通过基于Web的ICalendar验证器运行它.验证器给了我一个警告,说明Version属性应该是第一个属性,但没有发现任何其他问题.
除了组织者之外,ICalendar通常适用于每个用户.
我能够在自己的Outlook帐户上重现该问题.我注意到,如果我通过gmail邮件服务器发送会议通知,它会正常工作; 但是,当它来自我们的内部Outlook服务器时,它不会被添加到日历中.
灰显的会议控件下方会显示一条消息:"作为会议组织者,您无需回复此会议."
我们的系统生成的示例ICalendar文件:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//MyCompany//Product//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20101202T210423Z
UID:77B17E9B-BE02-476E-816B-ED9558EE7D2A
DTSTART:20101230T133000
DTEND:20101230T143000
SUMMARY:Review Meeting for A1 CI Review #123456
LOCATION:BLDG - 123
CREATED:20101202T210423Z
LAST-MODIFIED:20101202T210423Z
TZID:America/New_York
ORGANIZER;CN="ORGANIZER, THE";SENT-BY="mailto:noemail@mycompany.com":mailto:myemail@mycompany.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="ATTENDEE, SOME":mailto:noemail@mycompany.com
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
编辑:
我尝试将会议组织者添加为"可选"参与者.没有骰子; 同样的行为.
再次编辑这个问题以反映我在这个问题上的进展.
当有人从Microsoft Outlook向我发送会议邀请时,我在Mozilla Thunderbird中没有收到格式正确的电子邮件.我不能接受也不会拒绝会议邀请.
谁能告诉我如何在Thunderbird中查看/接受/拒绝会议邀请?
因此,使用rails/ruby和linux我希望能够发送真实的,真实的Outlook风格的会议请求.它是真实的,它应该像从Outlook发送时的会议请求一样.
请注意,我并不是说将iCal/vCal作为电子邮件的附件发送 - 我已经可以这样做了.iCal路线的问题是:
那么有谁知道如何从铁路发送Outlook会议请求?
更新我认为描述我想要实现的目标会有所帮助:
3人:James @ company.com,Bob @ company.com和Alice@company.com
在轨道上,詹姆斯安排与爱丽丝会面,并邀请鲍勃作为与会者.rails应用程序现在应该向James,Alice和Bob(作为参与者)发送会议请求(以James作为组织者),这样他们三个人都可以轻松地将此会议添加到他们的Outlook日历中(此时我不会关心衰退/ maybes).此外,Bob使用他的iPhone通过ActiveSync链接到Exchnage帐户,所以这也适用于他.
更新2:这是我的ics文件的内容(附在HTML电子邮件中),通过电子邮件发送到james@company.com(组织者)和与会者.每个人都需要能够将其添加到他们的日历中:
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
PRODID:iCalendar-Ruby
BEGIN:VEVENT
ORGANIZER:james@company.co.uk
ATTENDEE:srg@company.co.uk
ATTENDEE:at@company.co.uk
DESCRIPTION:QBR meeting\nWe will discuss the following:\n\nLocal Market\nBusinessPlanning\nProduct Range\nMarketing & Retailing Activity\n
DTEND:20130914T154500Z
DTSTAMP:20130911T140600Z
DTSTART:20130914T134500Z
CLASS:PRIVATE
LAST-MODIFIED:20130911T140600Z
LOCATION:Somewhere in a far off land
SEQUENCE:0
SUMMARY:Meeting with The Wizard
UID:MEETING71
URL:http://internal.company.co.uk/meetings/71
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
当该电子邮件出现在我的(詹姆斯)展望中时,有一个.ics附件(该电子邮件另外是常规HTML电子邮件).打开附件我被告知,作为会议组织者,我不需要回复并且没有"接受"或"添加到日历"选项
更新3:
这就是我现在发送的内容:
Date: Mon, 16 Sep 2013 16:02:52 +0100
From: app@company.co.uk
To: james@company.co.uk
Message-ID: <52371d9c820c2_475537fe74518a2@rails-devel.mail>
Subject: Meeting with Someone Interesting
Mime-Version: 1.0 …
Run Code Online (Sandbox Code Playgroud) 我正在处理一些创建Outlook会议请求的代码,我希望它能够发送到被邀请者列表.我可以创建会议请求,但我无法发送.我可以在我的日历中看到会议请求.我该如何发送?
这是我的代码:
Sub AddAppointments()
' Create the Outlook session
Set myOutlook = CreateObject("Outlook.Application")
' Start at row 2
r = 2
Do Until Trim(Cells(r, 1).Value) = ""
' Create the AppointmentItem
Set myApt = myOutlook.CreateItem(1)
' Set the appointment properties
myApt.Subject = Cells(r, 1).Value
myApt.Location = Cells(r, 2).Value
myApt.Start = Cells(r, 3).Value
myApt.Duration = Cells(r, 4).Value
myApt.Recipients.Add Cells(r, 8).Value
myApt.MeetingStatus = olMeeting
myApt.ReminderMinutesBeforeStart = 88
myApt.Recipients.ResolveAll
myApt.AllDayEvent = AllDay
' If Busy Status is not specified, default to 2 (Busy) …
Run Code Online (Sandbox Code Playgroud) outlook ×4
icalendar ×3
django ×1
excel ×1
gmail ×1
ical4j ×1
outlook-2007 ×1
outlook-vba ×1
thunderbird ×1
vba ×1