我有一个我最近继承的Outlook 2007加载项,目前在生产中存在一些问题,其中一些用户定期禁用加载项并且看似随机.加载项中没有日志,每个方法/事件调用都有try/catch(和eat)块到加载项代码中.我做了一些谷歌搜索,发现如果有未处理的异常抛出到Outlook,Outlook会对加载项进行"软禁用".
从我可以看出,没有任何异常从加载项中抛出.我想要做的是1)在插件中创建某种全局异常处理程序,以100%确保捕获所有异常.或者2)以某种方式监听outlook"禁用"注册表中的加载项并让该监听器删除outlook正在设置的reg键.
我试图通过以下方式做#1:
AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
System.Windows.Forms.Application.ThreadException += Application_ThreadException;Run Code Online (Sandbox Code Playgroud)
但都没有成功.
我意识到System.Windows.Forms.Application.ThreadException不一定适用于Outlook加载项,但我想为什么不尝试它.
此外,我已经读过Outlook为加载项启动一个单独的AppDomain,所以我希望AppDomain.CurrentDomain可以为此工作.我写了一些代码,故意抛出异常进行测试,无法进入其中任何一个事件,Outlook继续禁用外接程序.
任何帮助/见解将不胜感激.
在我的VSTO Outlook 2007插件中,我可以获取作为交换用户的收件人的电子邮件地址.但是,当我有以下情况时,它不会返回smtp电子邮件:
以下是我的代码:
Recipient r = mailItem.Recipients[i];
r.Resolve();
//Note, i have different conditions that check the AddressEntryUserType of recipient's
//address entry object. All other cases work fine. In this case this is
//olOutlookContactAddressEntry.
//I have tried the following:
ContactItem cont = r.AddressEntry.GetContact();
string email = cont.Email1Address;
string emailtmp = r.AddressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x800F101E") as string;
Run Code Online (Sandbox Code Playgroud)
任何人都可以请帮助我在这种情况下我应该使用什么属性来获取smtp电子邮件?
我不清楚类Folder和MAPIFolder命名空间之间的区别Outlook.当我查看网络中的代码时,一些使用第一个,而其他人使用其他语法,我无法确定是否:
as-ing)这是我用来获取这两个代码的代码.
Outlook.Folder defaultContactsFolder_1 =
this.Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder;
Outlook.MAPIFolder defaultContactFolder_2 =
this.Application.GetNamespace("MAPI").GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderContacts);
Run Code Online (Sandbox Code Playgroud) 我正在使用Outlook 2010加载项,该加载项具有使用Visual Studio 2010功能区设计器创建的多个功能区.我已经制作了一个额外的XML功能区(我需要覆盖一些内置功能区按钮的默认行为,这是设计人员无法完成的).
启用XML功能区会禁用所有设计器功能区,因为我必须覆盖CreateRibbonExtensibilityObject(ContactButtonOverrides是我的XML功能区):
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new ContactButtonOverrides();
}
Run Code Online (Sandbox Code Playgroud)
我正在覆盖的基类实现" 返回一个RibbonManager对象,该对象代表项目中的所有Ribbon(可视设计器)项 ".
有没有办法同时使用设计师制作的XML色带和色带?有没有办法将我的XML功能区添加到默认的RibbonManager?
在Outlook Web Add-In中,我试图拦截OnSend在发送电子邮件时触发的事件.
我在GitHub中使用了这个例子,它运行正常.
如果我在电子邮件正文中包含"附件"一词,并单击"发送"按钮,OnSend则会触发一次事件,并弹出一个弹出模式窗口,显示以下消息:
附件提醒
您可能忘记附加文件.
使用发送和不发送按钮.如果单击" 发送",OnSend事件将被触发两次:Send在附件提醒中单击按钮后2次.我只期待像第一个发送一样的事件.
如何OnSend在附件提醒后进行事件触发?
我们有一个用C#编写并使用Windows窗体的Office VSTO加载项.
在最近的Office更新之前,加载项呈现得很好.但在微软推出Office支持高清显示器之后,许多表单在Outlook 2016(MSO/Office 365)中开始呈现空白.
我可以通过在Outlook底部状态栏的"显示设置"中选择"优化兼容性"来解决Outlook中的问题:

但是,如果每个用户都必须手动执行此操作,这对我们的客户来说不是一个可行的解决方案.所以我有两个问题:
我发现禁用转换以一种形式修复了问题,其中控件在删除转换后开始出现.但是,即使在删除所有转换后,我们最重要的表单仍然呈现空白.
我还尝试将项目升级到.NET 4.7并为Windows Forms 启用新的高DPI支持.但这也没有解决问题.
如何从Outlook获取联系人的图片并将其保存到文件中?
谢谢!
我需要从邮件中获取并保存附件,但使用下面的代码会返回所有附件 - 这意味着它还会返回嵌入的图像,例如发件人的签名,徽标是图像.如何区分真实附件与嵌入图像?我在论坛上看到了很多,但我还不清楚.
public static void SaveData(MailItem currentMailItem)
{
if (currentMailItem != null)
{
if (currentMailItem.Attachments.Count > 0)
{
for (int i = 1; i <= currentMailItem.Attachments.Count; i++)
{
currentMailItem.Attachments[i].SaveAsFile(@"C:\TestFileSave\" + currentMailItem.Attachments[i].FileName);
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 嘿所有我试图在Outlook 2010 的默认主页选项卡中创建一个按钮.问题是,在VS2013中我添加了一个功能区(可视)并添加了按钮组,但它不断添加到TabAddIns选项卡.


我需要设置什么才能使自定义组/按钮显示在" 主页"选项卡中而不是创建自己的选项卡?
谢谢!
我有一个WPF outlook加载项,它是在Visual Studio 2008中使用C#开发的.它在Microsoft Outlook 2003,2007和2010上运行良好.但是当我在Outlook 2013中安装它时,它没有被激活.当我尝试激活它时,会出现以下异常.
未加载:在Outlook 2013中加载com add期间发生运行时错误
如果您遇到过这样的情况并找到解决方案,请指导我.