我有一个Outlook 2007加载项,试图将ics文件导入Outlook.AppointmentItem对象,以便我可以读取有关某些约会的属性.目前我无法将ics读回内存.关于我做错了什么的任何建议.
Outlook.Application app = new Outlook.Application();
var item = app.Session.OpenSharedItem("C:\\meeting.ics") as Outlook.AppointmentItem;
string meetingBody = item.Body; //<--*my item is null*
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在为我的组织创建一个替代电子邮件的安全消息.我们与外部治疗提供者交换机密患者信息.为保护隐私,我们不能为此目的使用电子邮件.
除了他们习惯使用的Outlook/Exchange电子邮件之外,不是强迫用户在这里使用全新的收件箱,发件箱和创作界面,我是否可以简单地添加一个"发送安全"按钮来指导他们的消息到我的自定义服务而不是电子邮件服务器?
带有新按钮的Microsoft Outlook http://img38.imageshack.us/img38/5140/newbutton.gif
我从未为Office应用程序创建加载项.是否有可能做到这一点?我应该如何开始?
我正在创建一个Outlook 2010加载项,并为我的功能区添加了一个上下文菜单,用于idMso ="contextMenuMailItem".点击,我想删除一个类别,但在click事件处理程序中,当我将ctl.Context转换为MailItem时,它始终为null.
public bool btnRemoveCategory_IsVisible(Office.IRibbonControl ctl)
{
MailItem item = ctl.Context as MailItem; //Always null
if (item != null)
return (item != null && HasMyCategory(item));
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
有谁知道这里发生了什么?谢谢!
当用户点击我的应用程序中的某个按钮或链接时,我需要打开一个带有预填充附件的新电子邮件窗口.
我已经尝试使用mailItem.SenderEmailAddress和mailItem.Sender.Address,但他们都返回一个字符串,它看起来像这样:
/O=DOMAINNAME/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHI43SPCLT)/CN=RECIPIENTS/CN=JOE BLOGGS8C3
实际上我想要joebloggs@domainname.co.uk重新开始.
有人有主意吗?
非常感谢你.
编辑:我做了一些挖掘; 它适用于"SenderEmailType"SMTP的电子邮件地址,它只适用于Exchange电子邮件地址.
编辑2:我已经尝试了这里指定的代码,但我认为它已经过时了,因为它抛出了"无法创建Active-X组件"错误.
编辑3: 对于任何遇到与我相同问题的人,我找到了答案(在C#中,转换为VB.NET,但仍然有效):
Private Function GetSenderSMTPAddress(mail As Outlook.MailItem) As String
Dim PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
If mail Is Nothing Then
Throw New ArgumentNullException()
End If
If mail.SenderEmailType = "EX" Then
Dim sender As Outlook.AddressEntry = mail.Sender
If sender IsNot Nothing Then
'Now we have an AddressEntry representing the Sender
If sender.AddressEntryUserType = Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry OrElse sender.AddressEntryUserType = Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry Then
'Use the …Run Code Online (Sandbox Code Playgroud) 我已经为2003,2007和2010创建了一个Outlook加载项.这个加载项在2007年和2010年运行良好,但在2003年没有在我自己的开发机器之外的任何机器上正确加载.没有代码问题,因为加载行为中没有显示错误,并且它不是禁用的项目.加载项也未显示在COM加载项列表中.这个加载项在2003年之前已经有效.
这是奇怪的部分.我有一个早期时间点的加载项副本,因此不包含完整版本的某些功能.这个加载项在2003年正确加载.因此,作为我的测试的一部分,在VM上,我安装了早期版本(我称之为测试)和当前版本不起作用(我将其称为完整版) .在HKCU>软件>类> CLSID> [[guid]]> InprocServer32下的注册表中,对于测试版本,我将"Manifest Location"和"Manifest Name"键更改为完整版的值.然后我运行Outlook,完整版完美运行.
我无法看到完整的加载项在它自己的注册表设置下是如何工作的,但在测试版下工作正常,并且仅在Outlook 2003上工作.
这是基本信息:
我的开发设置是:
安装项目中包含以下预先要求:
任何提示都会非常感激,因为我已经花了将近4天的时间来解决这个问题!
TIA.
更新1:
根据@JoaoAngelo评论我检查了注册表设置,它们如下:
HKCU>软件>类> CLSID> {加载项CLSID}> InprocServer32
- (default) - '%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll'
- ManifestLocation - path to the containing folder
- ManifestName - the .dll.manifest file name
- ThreadingModel - 'Both'
Run Code Online (Sandbox Code Playgroud)
HKCU>软件>微软> Office> Outlook> Addins> MyAddin …
我认为我今天的搜索技巧很糟糕,但我想知道我的加载项中运行的Office Outlook版本是什么?
即,我需要知道我的加载项是否与Outlook 2007或2010一起运行
是否有任何API可以用来查找当前的Outlook版本?
谢谢,哈莎
我已经成功创建了一个新标签,并将其放在预先存在的标签旁边.然后我意识到我只有一个按钮,因此将它放在Home选项卡上更有意义(现在).虽然没有真正得到它.
我试图遵循指南和走路.我给了我一个XML并将其XML更改为以下内容.
<tabs>
<!--<tab idMso="TabAddIns">-->
<tab idMso="TabHome">
<group id="group1" label="Hazaa!">
<box id="box1" />
</group>
</tab>
</tabs>
Run Code Online (Sandbox Code Playgroud)
当我运行项目时,我没有对UI进行任何更改,所以我猜:
TabHome错误(至少对于Outlook 2010),idMso是错误的(至少对于Outlook 2010)或我该怎么做才能改变色带?(Outlook 2010/VSTO/VS 2010/.NET 4).
我有一个VSTO Outlook 2007加载项.当新邮件进入收件箱时,我正在尝试获取发件人电子邮件地址.
为此,我使用以下代码:
void inboxItems_ItemAdd(object Item)
{
Outlook.MailItem mailItem = Item as Outlook.MailItem;
if (mailItem != null)
string emailAdress = mailItem.SenderEmailAddress;
}
Run Code Online (Sandbox Code Playgroud)
问题是当电子邮件来自同一个域时,emailAdress包含LDAP地址
/ O =第一个组织/ OU =第一个行政组/ CN = RECIPIENTS/CN = ADMINISTRATOR
虽然我想获得像这样的SMTP地址
administrator@orgname.com
我的问题是如何从内部域获取电子邮件的SMTP发件人地址?
PS
在Outlook 2010中,可以使用Sender属性解决此问题.但它在2007年不受支持.
item.Sender.GetExchangeUser().PrimarySmtpAddress
Run Code Online (Sandbox Code Playgroud) 我在Outlook中创建了一个基本的自定义任务窗格.
我想拖动一封电子邮件并将其放入任务窗格.当被删除时,它应该允许我将电子邮件捕获为我猜的对象,允许我用它来做事情,例如保存到sharepoint位置.
那可能吗?如果是这样,任何指针?
我使用的是VS2013 C#.NET 4.0,加载项适用于Outlook 2010/2013.
outlook-addin ×10
c# ×6
outlook ×4
vsto ×4
outlook-2010 ×3
outlook-2007 ×2
add-in ×1
appointment ×1
c#-4.0 ×1
deployment ×1
email ×1
icalendar ×1
mailitem ×1
ms-office ×1
outlook-2003 ×1
ribbon ×1
sharepoint ×1
vb.net ×1