왜 이런 일이 일어나는지 궁금할 것입니다. 확실히 말하자면, 이는 원래 Gmail로 작성된 이메일을 수신할 때만 발생합니다(Gmail 형식이 추가되지 않은 일반적인 구식 링크는 정상적으로 작동합니다).
Google은 링크 뒤에 이미지를 삽입하는데 해당 이미지 URI에는 프로토콜( http
또는 https
)이 포함되어 있지 않습니다. 다음과 같이 보입니다.
<img src="//ssl.gstatic.com/ui/v1/icons/common/x_8px.png">
이제 웹 브라우저에서는 정상적으로 작동합니다. 브라우저는 페이지를 로드하는 데 사용된 모든 프로토콜을 사용합니다(보통 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">
물론 수신자가 Outlook을 사용하는 경우 동일한 문제가 발생합니다(프로토콜은 file
도움이 되지 않습니다. 단지 Outlook이 Windows 파일 공유를 통해 액세스할 수 있는 파일에 대한 참조라고 생각하는지 확인하는 것뿐입니다).
이는 버전에 구애받지 않는 것으로 보입니다. 이는 2016까지의 모든 Outlook 버전에서 발생하는 문제입니다.
이 질문에 대해 제안된 두 가지 "대답"이 인터넷에 흩어져 있습니다.
- ssl.gstatic.com을 127.0.0.1로 확인하려면 호스트 파일에 DNS 항목을 추가하세요.
- Outlook에서 이미지 자동 다운로드 끄기
이것은 답변이 아닙니다. 다음은 큰 단점이 있는 해결 방법입니다.
- DNS 항목은 Outlook 문제를 해결하지만 웹 브라우저를 통해 Google 서비스에 액세스할 수는 없습니다.
- 이미지 다운로드를 끄면 Outlook 문제가 해결되지만, 많은 주소를 신뢰하는 사람에게는 매우 짜증나는 일이므로 수동으로 이미지 다운로드/표시를 선택할 필요가 없습니다.
불행하게도 Google은 이 이미지 URI를 수정하는 데 관심이 없습니다(비프로토콜 URI가 있는 유일한 이미지임에도 불구하고 Gmail 메시지에는 프로토콜이 포함된 수많은 다른 이미지가 포함되어 있음). 비프로토콜 버전 이후로 이해할 수 있음에도 불구하고 브라우저에서는 잘 작동합니다.
Microsoft도 Windows 파일 공유 링크를 표시하기 위해 먼저 비프로토콜 버전을 사용했기 때문에 이를 수정하지 않을 것이라고 주장하면서 같은 입장에 있습니다.
따라서 수년간 지속되어온 실제 문제를 해결하려는 사람은 아무도 없습니다.
답변1
최종 사용자에게 이런 일이 발생하는 이유를 설명했습니다. Outlook이 외부 파일을 찾고 있지만 데이터를 검색할 수 없습니다(최종 사용자가 쉽게 이해할 수 있는 방법).
이메일 편집 > 손상된 이미지 선택 > 삭제 > 이메일 저장에 대한 지침을 제공했습니다.
이 이메일에는 더 이상 존재하지 않으므로 이 이메일을 열 때 더 이상 문제가 발생하지 않습니다 file://ssl.gstatic.com/ui/v1/icons/common/x_8px.png
.
저는 이 방법을 선호합니다. Outlook 기능 중 일부(이메일 편집)에 대해 사용자를 교육하고 내부 문제가 아니라는 점을 알리고 이러한 이메일이 너무 적기 때문입니다(6개월에 1건). 물론 얼마나 많은 사람들이 문제를 겪고 있고 이에 대해 조용히 있는지는 모르지만 알아내기 위해 PowerShell 스크립트를 실행할 수도 있습니다. :)
답변2
유일한진짜제가 생각해낸 대답은 VBA 스크립트를 사용하는 것입니다. 이에 대해서는 아래에서 공유하겠습니다. 나보다 똑똑한 사람(또는 적어도 시간이 더 많은 사람)이 이것을 실제 Outlook 플러그인으로 바꿀 수 있기를 바랍니다. 당신이 그것으로 돈을 벌면 상관없지만, 꽤 간단하더라도 내가 원본 코드를 인정받았다면 깔끔할 것입니다.
경고: VBA(Visual Basic for Application)를 사용하는 것이 불편하다면 여기에서 멈추거나 편한 사람을 찾으십시오.
Outlook에서 개발자 메뉴를 켜는 방법은 다루지 않겠지만 Visual Basic을 열려면 이 메뉴가 필요합니다.
- 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
- 저장 아이콘을 클릭하세요.
- 아웃룩 다시 시작
Enable Macros
Outlook을 열 때마다 클릭해야 합니다 . 그렇지 않으면 코드가 실행되지 않습니다.
이렇게 하면 새 메시지가 모두 수정되지만오래된 메시지는 수정되지 않습니다.받은 편지함에 숨어 있을 수도 있습니다. (Outlook은 여전히 30초 동안 정지됩니다.) 여러분이 읽으려는 메시지를 수정하기 위한 코드를 만들려고 했지만 제대로 작동하지 못했습니다. 나는 메시지를 읽기 위해 메시지를 열 때 Outlook이 그러한 종류의 변경을 허용하지 않을 것이라고 생각합니다.
이것이 효과가 있는지 알려주세요. 다른 작업을 수행하는 코드가 너무 많아서 이 부분을 제거했습니다(그래서 이 원시 형식에서는 기술적으로 테스트하지 않았습니다.).