05 grudnia 2013

Znikające załączniki wysłane z Outlooka 2003

Powiecie: Kto używa jeszcze Outlooka 2003? Niektóre firmy na pewno, a znajdą się również użytkownicy domowi, przyzwyczajeni do tej wersji produktu. Ostatnio kilkukrotnie natknąłem się na dziwny problem. Kiedy ktoś wysyła do nas maila, utworzonego w Outlooku 2003 (domyślne kodowanie HTML), do którego dołączył załączniki w treści wiadomości, a my mamy skrzynkę pocztową na Exchange 2013 lub Office365, to w Outlooku 2007, 2010 i 2013, a także w OWA widzimy tylko treść wiadomości. Kiedy ta sama wiadomość jest wysyłana jako ‘plain text’ z tymi samymi załącznikami, jest wyświetlana poprawnie. Okazało się, że w nagłówku wiadomości jest umieszczona informacja, że treść załącznika jest typu Multipart/related.

image

Niestety, taki załącznik (inline attachment) najczęściej nie jest poprawnie wyświetlany w programach Outlook 2007/2010/2013 (nie jest zgodny z RFC2387) - http://support.microsoft.com/kb/961940.

Standardowo załączniki są dodawane do maili jako multipart/mixed, a nie multipart/related – stąd całe zamieszanie.

No dobrze, ale o ile możemy ujednolicić wersję Outlooka w naszej firmie, a nawet centralnie wymusić stosowanie treści HTML lub plain text poprzez polisy GPO, to nie możemy do tego zmusić kontrahentów z innych firm, czy osoby prywatne, wysyłające do naszej firmy pisma, podania czy dokumenty. Co w takim wypadku powinniśmy zrobić?

Jak podaje artykuł http://support.microsoft.com/kb/954684, w Exchange 2007 po zainstalowaniu Service Packa 2 mogliśmy użyć komendy:

set-OrganizationConfig -ShowInlineAttachments:$true

a w Exchange 2010 Some mogliśmy dodać do pliku EdgeTransport.exe.config, w sekcji ustawień aplikacji wstawić pomiędzy znaczniki <appSettings> oraz </appSettings> dodatkowy klucz:

<add key="TreatInlineDispositionAsAttachment" value="true" />

Niestety, te opcje nie są dostępne w Exchange 2013 ani w Office365.

Żeby poradzić sobie z tym problemem, musimy utworzyć regułę transportową, która będzie nam modyfikować nagłówek przychodzącego maila, zamieniając niepoprawną definicję typu załącznika na rozumianą przez Exchange 2013. W tym celu tworzymy regułę jak na obrazku:

image

Ponieważ łatwo się pomylić przy przepisywaniu, można skorzystać z opcji importowania reguł w Exchange:

[Byte[]]$Data = Get-Content -Path "C:\Scripts\Rules.xml" -Encoding Byte -ReadCount 0
Import-TransportRuleCollection –FileData $Data

Gdzie w pliku rules.xml umieścimy definicję powyższej reguły:


<rule name="Edit Headers to make attachments visible" id="403270a3-82bb-4802-a6e4-5809df639c6e" format="cmdlet">
    <version requiredMinVersion="15.0.3.0">
      <commandBlock><![CDATA[New-TransportRule -Name 'Edit Headers to make attachments visible' -Comments '
' -Mode Enforce -HeaderMatchesMessageHeader 'Content-Type' -HeaderMatchesPatterns 'multipart/related' -SetHeaderName 'Content-Type' -SetHeaderValue 'multipart/mixed']]></commandBlock>
    </version>
</rule>

UWAGA: Import zestawu reguł transportowych kasuje istniejące definicje reguł, przed importem zatem musimy wyeksportować istniejące reguły transportowe, wykonując poniższe polecenia:

$file = Export-TransportRuleCollection
Set-Content -Path "C:\Scripts\Rules.xml" -Value $file.FileData -Encoding Byte

Następnie do pliku Rules.xml dodajemy definicję reguły widniejącą powyżej i po zapisaniu importujemy tak uzupełniony zestaw reguł. Jeżeli nasz Exchange 2013 nie ma jeszcze żadnych reguł można cały plik xml pobrać z tego miejsca.

Brak komentarzy: