我继承了使用VB6编写的Outlook 2003 COM加载项(注意:NOT VB.NET).
我需要升级它以使用Outlook 2010.是否可以使用VB6为Outlook 2010创建加载项,或者我是否需要重新实现所有内容?
我试图MailItem从我的加载项捕获对象.我试过看,Globals.FormRegions但没有真正到达任何地方.任何线索如何Outlook.MailItem在新的Compose窗口中访问?
我有一个可以放邮件项目的控件,工作正常,但无法清除选择/项目。
例如:我将邮件1拖放->邮件1在我的列表中从列表中删除邮件1返回Outlook并拖放邮件2
邮件2出现在我的列表中,但邮件1也已恢复!我发现了很多相关的帖子,Marshal.ReleaseComObject但我想我做得不好?
规格:VS2010、4.0框架。Windows 7操作系统,Outlook 2010
这是我的代码的一部分:
调用我的Save方法:
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
Try
Dim SafeSaveMethod As New dlgCallSaveMails(AddressOf SaveMailsFromSelection)
Me.BeginInvoke(SafeSaveMethod, Me.FileData.Pad)
Run Code Online (Sandbox Code Playgroud)
该Save方法:
Private Sub SaveMailsFromSelection(_path As String)
' File uit Outlook
Dim x As Integer
Dim xitmndx As Integer = 0
Dim DestFile As String
Dim oOutLook As New Outlook.Application
Dim oExplorer As Outlook.Explorer
Dim oSelection As Outlook.Selection
Dim strFile As String
oExplorer = oOutLook.ActiveExplorer
oSelection = oExplorer.Selection
Dim currentFolder As MAPIFolder = oExplorer.CurrentFolder
Dim …Run Code Online (Sandbox Code Playgroud) 前阵子我一直在寻找一种灵活的方法来自动为不同类型的用户生成签名。我们的网域有多家公司,每个公司都有不同的需求。进行胶凝时发现的默认脚本仅显示了如何创建基本签名。
下面的脚本需要进一步执行一些步骤。首次启动Microsoft Office时,它将填写用户名和缩写。如果没有Outlook配置文件,它将使用PRF文件设置Outlook(您可以将缓存用于笔记本电脑/平板电脑,不缓存用于台式机/服务器)。然后,它检查用户应该获得哪些签名,并使用签名文件,模板文件中的信息以及活动目录中的用户信息来构建它们。所有状态信息都会写入应用程序事件日志(过滤器WSH)。当签名文件被更新时,签名将被重新应用。
我将整个脚本发布在这里,希望其他人会发现它有用。随意发表评论(或捐赠课程:-)。它适用于Outlook 2000、2003、2010和2013(并且应在不久的将来使用)。
我有一个在.NET 4.0/VS.NET 2010 C#中编写的Outlook 2010加载项.加载项扩展了Ribbon =>它添加了一个RibbonTab带有4个RibbonButtons(RibbonType属性设置为)Microsoft.Outlook.Explorer和Microsoft.Outlook.Mail.Read.
现在,如果用户单击其中一个RibbonButtons,我如何确定用户是否单击了添加到Microsoft.Outlook.ExplorerOR 的按钮Microsoft.Outlook.Mail.Read?
我们正在建设使用VS2013,.NET4,微软异步和BCL便携性(从的NuGet),并遇到类似建立错误一个Outlook插件2010 这个问题和这个论坛讨论遗憾的是没有这些资源(或网络的其余部分)的帮助解决我们的问题.
构建错误和Fusion日志位于底部.我的第一个问题:
如何解决此FindRibbons构建任务?从VS目标文件中完全删除它可以完成构建,但代价是没有功能区控件.
我们的第二个症状是Attempting downloadFusion日志的部分.DLL在我们的项目bin\Debug目录下构建,因此其他目录搜索是奇数.这提出了我的第二个问题:
我们忽略的Fusion日志中是否有症状?
最后一个症状来自详细的构建日志,我们在其中看到mscorlib,System.Core和其他几个库之间的冲突.这些依赖项通过Bcl等进入,4.0.0.0与2.0.5.0冲突似乎可以防止构建或生成FileNotFoundException.我们使用绑定重定向等尝试了许多补救措施,但无法使其工作.最后一个问题:
此版本的解决方案或故障排除提示构建冲突?
提前谢谢了.抱歉这个长度.
承诺构建失败:
Error 1 The "FindRibbons" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly 'myDocketOutlookAddIn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'myDocketOutlookAddIn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
Server stack trace:
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String …Run Code Online (Sandbox Code Playgroud) 我有这个表,我需要在单元格之间的间距:
<table cellpadding="0" cellspacing="5px">
<tr>
<td><img src="http://placehold.it/100"/></td>
<td><img src="http://placehold.it/100"/></td>
<td><img src="http://placehold.it/100"/></td>
<td><img src="http://placehold.it/100"/></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
在Outlook 2007,2010和2013中,间距不正确,而在其他客户端中它看起来很好.
Outlook 2007,2010和2013:

其他客户:

我该如何解决?
背景:
使用Outlook规则触发脚本,我希望收到来自某些高可见性客户端的所有电子邮件后立即打开.
我已成功设置一条规则,当这些客户端向我发送电子邮件时会触发该规则 它看起来像这样:
我已经成功创建了一个脚本,可以打开对电子邮件的回复,具体取决于发送者是谁.它看起来像这样:
Sub OpenEmailImmediately(oEmail As Outlook.MailItem)
Select Case oEmail.Sender
Case "Jobs, Steve"
oEmail.Reply.Display
End Select
End Sub
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但我已经使用.Sender属性实现了它.
问题:
我更愿意使用发件人的电子邮件地址(与我收到的每封电子邮件相关联的唯一值)实现此目的.不幸的是,oEmail.SenderEmailAddress我希望它包含电子邮件地址,仅适用于外部客户端.
在进行故障排除时,我发现我预计oEmail.SenderEmailAddress会有类似于此的值:
steve.jobs@apple.com
对于内部电子邮件,它具有与此类似的值:
/ O = APPLE/CN = RECIPIENTS/CN = JOBSS6738
题:
有没有办法可以使用标准电子邮件地址使这个脚本适用于内部和外部?
实施解决方案的代码:
使用下面的Dmitry答案,代码被修改为使用电子邮件地址:
Sub OpenEmailImmediately(oEmail As Outlook.MailItem)
If oEmail.SenderEmailType = "EX" Then
Select Case oEmail.Sender.GetExchangeUser().PrimarySmtpAddress
Case "steve.jobs@apple.com"
oEmail.Reply.Display
End Select
Else
Select Case oEmail.SenderEmailAddress
Case "tom.brady@patriots.com"
oEmail.Reply.Display
End Select
End If
End Sub
Run Code Online (Sandbox Code Playgroud) 在outlook 2010(Windows 7)中,对于某些html电子邮件,我可以直接看到"在浏览器中查看"操作,如下所示

虽然对于某些HTML电子邮件,我无法直接看到,我必须从菜单中选择它
你知道html的哪一部分引发了这个吗?
其背后的原因是确保使用outlook 2010的人有机会看到更好的电子邮件.
我正在通过 Search.Save 方法以编程方式创建搜索文件夹。保存搜索后(它在“搜索文件夹”目录中创建一个新文件夹),我想将焦点设置在这个新创建的文件夹上,以便视图更改为该文件夹。
这是我迄今为止的代码......
searchFolders = inboxFolder.Store.GetSearchFolders();
foreach (Outlook.Folder folder in searchFolders)
{
if (folder.Name == "Expiring Retention Policy Mail")
{
folder.ShowItemCount = Microsoft.Office.Interop.Outlook.OlShowItemCount.olShowTotalItemCount;
//folder.SetCustomIcon(new Bitmap(32, 32));
folder.Display();
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行folder.Display()时,它会打开一个全新的检查器窗口...我不希望发生这种情况,我只是想选择它(例如通过设置焦点?)并在同一个检查器窗口中查看它它存在于。有人知道该怎么做吗?
谢谢。
outlook-2010 ×10
c# ×4
outlook ×4
vsto ×3
html-email ×2
gpo ×1
group-policy ×1
msbuild ×1
outlook-2007 ×1
outlook-2013 ×1
outlook-vba ×1
vb.net ×1
vb6 ×1
vba ×1
vbscript ×1