我有一些问题.我正在尝试发送一个ics文件,因此outlook用户可以在他的日历中添加该事件.在某些版本中,如2010年,它运作良好(家庭版)但在某些版本(如商业)它不能直接识别它.您必须双击内容才能进行预览.在那个其他版本中,它会在我点击邮件时立即显示日历选项.
我究竟做错了什么?
这是日历的代码.
$str="BEGIN:VCALENDAR\r\n
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN\r\n
VERSION:2.0\r\n
METHOD:REQUEST\r\n
X-MS-OLK-FORCEINSPECTOROPEN:TRUE\r\n
BEGIN:VTIMEZONE\r\n
TZID:GTB Standard Time\r\n
BEGIN:STANDARD\r\n
DTSTART:16011028T000000\r\n
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n
TZOFFSETFROM:+0300\r\n
TZOFFSETTO:+0200\r\n
END:STANDARD\r\n
BEGIN:DAYLIGHT\r\n
DTSTART:16010325T000000\r\n
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3\r\n
TZOFFSETFROM:+0200\r\n
TZOFFSETTO:+0300\r\n
END:DAYLIGHT\r\n
END:VTIMEZONE\r\n
BEGIN:VEVENT\r\n
ATTENDEE;CN=silvian.iosub@gmail.com;RSVP=
TRUE:mailto:silvian.iosub@gmail.com\r\n
CLASS:PUBLIC\r\n
CREATED:20110803T133418Z\r\n
DTEND:$endtime_ics\r\n
DTSTAMP:20110803T095605Z\r\n
DTSTART:$starttime_ics\r\n
LAST-MODIFIED:20110803T133418Z\r\n
ORGANIZER;CN=\"Silvian Iosub\":mailto:
silvian.iosub@avira.com\r\n
PRIORITY:5\r\n
SEQUENCE:0\r\n
SUMMARY;LANGUAGE=ro:New Event\r\n
TRANSP:OPAQUE\r\n
UID:".MD5(TIME())."-85d2-69b00dea0ad4\r\n
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE\r\n
X-MICROSOFT-CDO-IMPORTANCE:1\r\n
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\r\n
X-MICROSOFT-DISALLOW-COUNTER:FALSE\r\n
X-MS-OLK-AUTOSTARTCHECK:FALSE\r\n
X-MS-OLK-CONFTYPE:0\r\n
BEGIN:VALARM\r\n
TRIGGER:-PT15M\r\n
ACTION:DISPLAY\r\n
DESCRIPTION:Reminder\r\n
END:VALARM\r\n
END:VEVENT\r\n
END:VCALENDAR\r\n";
Run Code Online (Sandbox Code Playgroud)
我正在使用swift类发送电子邮件; 以下是设置:
$attachment = Swift_Attachment::newInstance()
->setFilename("Invitatie.ics")
->setContentType('text/calendar;method=REQUEST;charset=UTF-8;')
->setBody($str)
->setDisposition("inline,filename=".$confDesc.".ics");
$message2->attach($attachment);
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Microsoft Outlook 插件,我在“插件”选项卡名称中添加了一个按钮OPENISMS
。我可以看到该按钮,但是单击时事件不会被触发。我不知道它为什么会这样。请在下面找到添加按钮并向其附加事件的代码。任何帮助将不胜感激。
private void AddButtonToNewDropdown()
{
Office.CommandBar commandBar = this.Application.ActiveExplorer().CommandBars["Standard"];
Office.CommandBarControl ctl = commandBar.Controls["&New"];
if (ctl is Office.CommandBarPopup)
{
Office.CommandBarButton commandBarButton;
Office.CommandBarPopup newpopup = (Office.CommandBarPopup)ctl;
commandBarButton = (Office.CommandBarButton)newpopup.Controls.Add(1, missing, missing, missing, true);
commandBarButton.Caption = "OpenISMS";
commandBarButton.Tag = "OpenISMS";
commandBarButton.FaceId = 6000;
//commandBarButton.Enabled = false;
commandBarButton.OnAction = "OpenISMSThruMail.ThisAddIn.ContextMenuItemClicked";
commandBarButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(ContextMenuItemClicked);
}
}
private void ContextMenuItemClicked(CommandBarButton Ctrl, ref bool CancelDefault)
{
if (currentExplorer.Selection.Count > 0)
{
object selObject = currentExplorer.Selection[1];
if (selObject is MailItem)
{
// …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个简单的Outlook 2010加载项,以响应新的附件事件.下面的代码仅在我取消注释MessageBox.Show行时才有效.但删除它似乎不添加事件处理程序.我对程序流的缺失是什么意味着模态消息框会影响事件处理程序的位置?
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.Inspectors.NewInspector += Inspectors_NewInspector;
}
void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
if (mailItem != null)
{
if (mailItem.EntryID == null)
{
mailItem.BeforeAttachmentAdd += mailItem_BeforeAttachmentAdd;
//System.Windows.Forms.MessageBox.Show("Twice");
}
}
}
void mailItem_BeforeAttachmentAdd(Outlook.Attachment Attachment, ref bool Cancel)
{
Cancel = true;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud) 我需要为一些时间计算创建一个Outlook插件.实际要求是 -
使用Visual Studio 2015,我查看了VSTO,但他们没有可以从服务器读取html的html页面.我还查看了Outlook WebAddin - 模块扩展,但仅适用于Outlook 2016及更高版本.
任何人都可以建议我什么是我的要求的正确方法.如果被问到,我可以提供更多有关要求的说明.谢谢.
vsto outlook-addin office365 visual-studio-2015 outlook-web-addins
我正在尝试以编程方式将自动格式规则应用于 Outlook 2016。首先,我手动创建了一条规则并读取了过滤器属性,我得到了这样的过滤器:
"(\"urn:schemas:httpmail:read\" = 0 AND \" http://schemas.microsoft.com/mapi/proptag/0x001a001e \" = 'IPM.Note.MyMessage')"
然后我尝试以编程方式应用它:
Dictionary<string, OlColor> colorizationRules = new Dictionary<string, OlColor>()
{
{Resources.MsgClass1, OlColor.olColorRed},
{Resources.MsgClass2, OlColor.olColorYellow},
{Resources.MsgClass3, OlColor.olColorGreen}
};
Explorer explorer = Application.ActiveExplorer();
if (explorer != null)
{
TableView tableView = explorer.CurrentView as TableView;
if (tableView != null)
{
IEnumerable<AutoFormatRule> rules = tableView.AutoFormatRules.Cast<AutoFormatRule>();
foreach (KeyValuePair<string, OlColor> coloriztionRule in colorizationRules)
{
AutoFormatRule newRule = tableView.AutoFormatRules.Add(coloriztionRule.Key);
newRule.Filter = $"(\"urn:schemas:httpmail:read\"=0 AND \"http://schemas.microsoft.com/mapi/proptag/0x001a001e\"='{coloriztionRule.Key}')";
newRule.Font.Color = coloriztionRule.Value;
newRule.Enabled = true;
tableView.AutoFormatRules.Save();
tableView.Save();
tableView.Apply();
}
}
} …
Run Code Online (Sandbox Code Playgroud) 对于 Office 365 Outlook Web App,我们希望在最终用户上传附件后将附件转换为链接,但是我们在当前的 Outlook 插件中没有看到附件通知事件。
我们可以做的另一种方法是要求他们使用我们自己的按钮进行上传,但是我们需要引导最终用户使用我们自己的按钮,一旦显示新的电子邮件消息框,我们是否可以在电子邮件正文顶部添加一些消息,如下所示?
不知何故,根据我们的研究,Outlook Addin 目前只有一个事件,即SendEvent,有人可以确认这一点吗?如果是这样,那就相当有限了。
我需要开发能够使用从远程服务器下载的选项卡扩展现有表单的Outlook扩展.例如,在约会表单中应显示其他选项卡.此选项卡中的表单定义从Web服务下载并使用WPF进行呈现.此选项卡的数据也来自服务器,并绑定到表单字段.最后一件事 - 当表单保存时,它也应该提交给这个远程服务器.
它应该在Outlook 2003和2007中有效.
主要问题是:
UPDATE
非常感谢您的回答!当然,有太多不同的问题,所以我必须把它分解成几个部分.阅读回复并做完作业后我想恢复:
我正在创建一个Outlook加载项,我想知道如何从选定的日历中获取元素?例如,我需要从名为"myCalendar"的日历中获取所有约会项目.现在,我可以从所有日历中获取所有约会项目.
谢谢,
我已将ContextMenuItem添加到ContextMenu for Outlook约会.
问题是我无法弄清楚如何获得Appointment对象.如果我得到一个IRibbonControl,它的Context属性应该包含Appointment,但它包含一个Selection.据我所见,我无法使用选择来预约.
这个页面是我来自的地方:https://msdn.microsoft.com/en-us/library/office/ff863278%28v=office.14%29.aspx
谁知道如何获得预约?
我试图找到我的问题的解决方案,但没有找到任何地方,希望这里有人能救我。
我在 VS2015 上用 JavaScript 编写插件来加密和解密正文消息。
1. 第一个问题是接收者看不到的图像。 (谈谈通过“插入图片内联”按钮复制到正文中的图像)
在撰写模式下,我们对消息进行加密,然后当我们解密时,它的效果很好,因为撰写模式是客户端,他可以识别本地图像。在阅读模式下,当用户想要解密消息并查看他看不到的图像时,因为加密会阻止 Outlook 将本地图像转换为服务器上的数据。
在我的代码中,我采用这样的正文消息(撰写模式)
item.body.getAsync(
item.body.getAsync(
"html",
{ asyncContext: "This is passed to the callback" },
function callback(resultbody) {
......Here we send the body for ENCRYPT.
}))
Run Code Online (Sandbox Code Playgroud)
然后,用户通过单击“发送”常规发送加密消息。
在阅读模式下,我只是将它打印到我的 html 以检查解密是否良好:
(JSON.parse(xhr.responseText).Data.Content));
Run Code Online (Sandbox Code Playgroud)
然后我得到图片图标,但没有成功显示真实图片。图标的 src 将用于他无法访问的地方..
<img src="https://attachment.outlook.office.net/owa/*****/service.svc/s/GetFileAttachment?id=AAMkADUwMDE0YWM1LTYwODctNG ......
Run Code Online (Sandbox Code Playgroud)
我怎样才能拿到这个图像标签并做一些让接收者可以看到图像的事情?我不希望该用户需要从我的加载项而不是原始 Outlook 将图像上传到正文。我尝试将图像转换为 base-64 字符串,但是我在标签中的内容还不够,仅使用原始图片,并且成功显示在 html 中,但不能显示在带有 SetAsync 函数的消息正文中。
2. 第二个问题是附件。 我用dropzone插件上传文件(因为outlook不允许访问附件并更改他)。因此,在我上传文件并加密他之后,我使用来自服务器的响应和 JS 的 File API 创建了一些新文件:
ar f = new File([""], "filename.txt", {type: "text/plain", lastModified: date}) . .. …
Run Code Online (Sandbox Code Playgroud) 我有一个Outlook加载项,该加载项从OfficeJS捕获ItemID,并将其传递回快递服务器,该服务器通过Graph API转发端点转发消息。
通常,我得到的ItemID类似于Graph API正确转发的内容:
AQMkADAwATNiZmYAZC1mZDMyLTJjODAtMDACLTAwCgBGAAAD6HpLXdIWSkydFpIOnccszQcAa+WVq3+CfU+sUUEjYH6kNXXXXXXa+WVq3+CfU+sUUEjYH6kNAAAANor+k8AAAA=
我遇到的问题是,在某些情况下,我会得到一个这样的ItemID:
AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA
注意/
尾随前的权利AAAA
。
因此,我然后对URI组件进行编码并触发以下请求:
https://graph.microsoft.com/v1.0/me/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ%2BJc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC%2BafEDRa51jp3lYhRMAAHjntX%2FAAAA/forward
Run Code Online (Sandbox Code Playgroud)
我得到这个回应:
"error":{
"code":"BadRequest",
"message":"Unsupported segment type. ODataQuery: users/rando@outlook.com/messages/AQMkADAwATM0MDAAMS1hYzNiLWY1MjAtMDACLTAwCgBGAAADt9wSOQ+Jc0urM7fl9yLPMwcAKzExAL5p8QNFrnWOneViFEwXXXXXXCsxMQC+afEDRa51jp3lYhRMAAHjntX/AAAA/forward",
"innerError":{
"request-id":"6b3a8b34-4474-4260-98d4-107b1dfd4cc4",
"date":"2017-08-04T18:02:10"
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到这个问题或知道解决方案?当/
ItemId中包含a时,这似乎在Microsoft端可能是一个问题。
注意:对发布的用户和ItemIds进行了一些清洁。
outlook-addin ×11
outlook ×7
vsto ×4
add-in ×3
c# ×3
.net ×2
office-js ×2
icalendar ×1
ms-office ×1
office-2010 ×1
office365 ×1
outlook-2010 ×1
outlook-form ×1
php ×1