Joh*_* T. 5 microsoft-outlook email google-drive
您可能想知道为什么会发生这种情况?好吧,需要明确的是,只有在收到最初用 Gmail 编写的电子邮件时才会发生这种情况(没有添加 Gmail 格式的常规老式链接可以正常工作)。
Google 在链接后插入图像,并且该图像 URI 不包含协议 (http
或https
)。它看起来像这样:
<img src="//ssl.gstatic.com/ui/v1/icons/common/x_8px.png">
Run Code Online (Sandbox Code Playgroud)
现在,在网络浏览器中,这一切都可以正常工作;浏览器将使用加载页面时使用的任何协议(通常https
是现在)。
然而,在 Outlook 中,这被解释为 Windows 文件共享链接。
因此,Outlook 决定尝试使用 Windows 文件共享(在端口 445 上)访问该地址,Google 不会拒绝该请求,而是会忽略它,并且 Outlook 会停止响应,直到 30 秒后超时。每次您打开邮件时,Outlook 都会执行此操作。
如果您转发邮件,Outlook 会file
在图像 URI 上附加一个协议:
<img src="file://ssl.gstatic.com/ui/v1/icons/common/x_8px.png">
Run Code Online (Sandbox Code Playgroud)
当然,如果收件人有 Outlook,他或她也会遇到同样的问题(该file
协议没有帮助;它只是确认 Outlook 认为它是对可通过 Windows 文件共享访问的文件的引用)。
这似乎与版本无关 - 这是 2016 年之前所有 Outlook 版本的问题。
对于这个问题,互联网上散布着两个建议的“答案”:
这些都不是答案。这些解决方法有很大的缺点:
不幸的是,Google 没有兴趣修复此图像 URI(尽管它是唯一具有非协议 URI 的图像 - Gmail 消息否则包含大量其他都包含该协议的图像),尽管这是可以理解的,因为非协议版本在浏览器中运行良好。
微软也有同样的情况,声称他们首先使用非协议版本来指示Windows文件共享链接,因此他们也不会修复它。
所以没有人愿意解决已经存在多年的实际问题!
我想出的唯一真正的答案是使用 VBA 脚本,我将在下面分享。我希望比我更聪明的人(或者至少有更多时间的人)可以将其变成一个真正的 Outlook 插件。我不在乎你是否能从中赚钱,但如果我能获得原始代码,那就太好了,尽管它相当简单。
警告:如果您不习惯使用 Visual Basic for Applications (VBA),那么您应该就此停止或找一个熟悉的人。
我不会介绍如何打开 Outlook 中的“开发人员”菜单,但您需要它才能打开 Visual Basic。
Project1
Microsoft Outlook Objects
ThisOutlookSession
' When new mail is received...
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim arr() As String
Dim i As Integer
Dim item As Object
Dim mailItem As mailItem
arr = Split(EntryIDCollection, ",")
For i = 0 To UBound(arr)
Set item = GetItemById(arr(i))
If item.Class = olMail Then
Set mailItem = item
Call FixGoogleDriveLinks(mailItem)
End If
Next
Set item = Nothing
Set m = Nothing
End Sub
' Fix Google's gstatic.com links with no protocol so that they use the https protocol explicitly
' This prevents Outlook from hanging on these since it attempts to treat them as Windows File Sharing links
Function FixGoogleDriveLinks(olItem As mailItem)
olItem.HTMLBody = Replace(olItem.HTMLBody, """//ssl.gstatic.com", """https://ssl.gstatic.com") ' For new messages that came directly from Gmail
olItem.HTMLBody = Replace(olItem.HTMLBody, "file://ssl.gstatic.com", "https://ssl.gstatic.com") ' For messages that were forwarded using Outlook
olItem.Save
End Function
Run Code Online (Sandbox Code Playgroud)
Enable Macros
(否则代码将无法运行)这将修复任何新邮件,但不会修复您可能隐藏在收件箱中的任何旧邮件(它们仍会冻结 Outlook 30 秒等)。我尝试创建代码来修复您尝试阅读的任何邮件,但我无法做到这一点。我怀疑当您打开邮件阅读邮件时,Outlook 不允许进行此类更改。
请告诉我这是否适合你 - 我有大量代码在做其他事情,所以我把它去掉了(所以我没有以这种原始形式对它进行技术测试。)
归档时间: |
|
查看次数: |
15068 次 |
最近记录: |