标签: outlook-addin

Outlook 2007加载项异常处理

我有一个我最近继承的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继续禁用外接程序.

任何帮助/见解将不胜感激.

outlook-2007-addin outlook-addin

9
推荐指数
1
解决办法
1216
查看次数

获取作为交换用户的收件人的电子邮件地址

在我的VSTO Outlook 2007插件中,我可以获取作为交换用户的收件人的电子邮件地址.但是,当我有以下情况时,它不会返回smtp电子邮件:

  1. 添加新的Outlook联系人项目(在Outlook联系人中).
  2. 此联系人项目的电子邮件地址应为交换用户的电子邮件(您组织的任何人,但这是交换用户).
  3. 现在,当我选择此Outlook联系人作为电子邮件收件人时,在项目发送事件中,我无法获取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电子邮件?

vsto ms-office outlook-addin

9
推荐指数
2
解决办法
4672
查看次数

Outlook.Folder和Outlok.MAPIFolder之间的区别

我不清楚类FolderMAPIFolder命名空间之间的区别Outlook.当我查看网络中的代码时,一些使用第一个,而其他人使用其他语法,我无法确定是否:

  • 这只是因为他们的无知(甚至更少我可以分辨出哪一组是正确的)
  • 它是某种遗留(用于不同版本的Outlook)
  • 这是完全相同的事情(我很确定这是不正确的,但我不知道)
  • 它是一个继承结构(以及什么时候使用)
  • 它只是一种避免类型问题的方法(cast和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)

c# outlook outlook-addin

9
推荐指数
1
解决办法
8422
查看次数

VSTO - 是否可以同时拥有设计器和XML色带?

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

c# vsto outlook-addin

9
推荐指数
1
解决办法
5219
查看次数

OnSend在附件提醒后解雇了两次

在Outlook Web Add-In中,我试图拦截OnSend在发送电子邮件时触发的事件.

我在GitHub中使用了这个例子,它运行正常.

如果我在电子邮件正文中包含"附件"一词,并单击"发送"按钮,OnSend则会触发一次事件,并弹出一个弹出模式窗口,显示以下消息:

附件提醒

您可能忘记附加文件.

使用发送不发送按钮.如果单击" 发送",OnSend事件将被触发两次:Send在附件提醒中单击按钮后2次.我只期待像第一个发送一样的事件.

如何OnSend在附件提醒后进行事件触发?

outlook-addin office-js

9
推荐指数
1
解决办法
265
查看次数

Outlook VSTO具有新的Office High DPI支持

我们有一个用C#编写并使用Windows窗体的Office VSTO加载项.

在最近的Office更新之前,加载项呈现得很好.但在微软推出Office支持高清显示器之后,许多表单在Outlook 2016(MSO/Office 365)中开始呈现空白.

我可以通过在Outlook底部状态栏的"显示设置"中选择"优化兼容性"来解决Outlook中的问题: 显示设置弹出窗口

但是,如果每个用户都必须手动执行此操作,这对我们的客户来说不是一个可行的解决方案.所以我有两个问题:

  1. Windows注册表中的这个设置位于何处以及我需要写什么值才能激活"Optimize for compatibility"模式?
  2. 如何使用新的"Optimize for best appearance"模式使WinForms加载项工作?

更新

我发现禁用转换以一种形式修复了问题,其中控件在删除转换后开始出现.但是,即使在删除所有转换后,我们最重要的表单仍然呈现空白.

我还尝试将项目升级到.NET 4.7并为Windows Forms 启用新的高DPI支持.但这也没有解决问题.

vsto winforms outlook-addin

9
推荐指数
1
解决办法
626
查看次数

如何以编程方式在Outlook 2010中获取联系人的图片?

如何从Outlook获取联系人的图片并将其保存到文件中?

谢谢!

.net c# outlook outlook-addin outlook-2010

8
推荐指数
1
解决办法
6110
查看次数

vsto +区分附件

我需要从邮件中获取并保存附件,但使用下面的代码会返回所有附件 - 这意味着它还会返回嵌入的图像,例如发件人的签名,徽标是图像.如何区分真实附件与嵌入图像?我在论坛上看到了很多,但我还不清楚.

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)

c# outlook vsto outlook-addin

8
推荐指数
1
解决办法
1782
查看次数

带有自定义按钮的Outlook插件主页选项卡

嘿所有我试图在Outlook 2010 的默认主页选项卡中创建一个按钮.问题是,在VS2013中我添加了一个功能区(可视)并添加了按钮组,但它不断添加到TabAddIns选项卡.

在此输入图像描述

在此输入图像描述

我需要设置什么才能使自定义组/按钮显示在" 主页"选项卡中而不是创建自己的选项卡?

谢谢!

vb.net outlook ribbon outlook-addin c#-4.0

8
推荐指数
1
解决办法
7889
查看次数

未加载:在Outlook 2013中加载com添加期间发生运行时错误

我有一个WPF outlook加载项,它是在Visual Studio 2008中使用C#开发的.它在Microsoft Outlook 2003,2007和2010上运行良好.但是当我在Outlook 2013中安装它时,它没有被激活.当我尝试激活它时,会出现以下异常.

未加载:在Outlook 2013中加载com add期间发生运行时错误

如果您遇到过这样的情况并找到解决方案,请指导我.

wpf outlook-addin

8
推荐指数
1
解决办法
281
查看次数