Objawy
Rozważmy następujący scenariusz:
- Wysyłasz wiadomość e-mail przy użyciu skrzynki pocztowej programu Microsoft Exchange Server 2016 lub Exchange Server 2013.
- Wiersz tematu wiadomości e-mail zawiera nieobsługiwane znaki zakodowane, zaczynające się od CP lub MS i następujące po nich znak "-" zamiast cyfry, na przykład cp-850.
W tym scenariuszu wiadomość e-mail nie zostanie dostarczona. Ponadto może zostać wyświetlony komunikat raportu o niedostarczeniu (NDR, non-delivery report) podobny do następującego:
Uwaga
Serwer zdalny zwrócił '550 5.6.0 CAT. InvalidContent.Exception: InvalidCharsetException, nazwa zestawu znaków (cp-850) jest nieprawidłowa lub nie jest zainstalowana.; nie potrafi obsłużyć treści wiadomości z InternalId, InternalId, InternetMessageId.'
W związku z tym wiadomości e-mail z raportów dziennika raportu raportu o niedostarczeniu dla poczty o znakach cp-850 nie mogą być dostarczane do docelowych skrzynek pocztowych dziennika programu Exchange.
Przyczyna
Ten problem występuje, ponieważ programy Exchange Server 2016 i Exchange Server 2013 nie przetwarzają wiadomości e-mail, jeśli wiersz tematu zawiera nieobsługiwane znaki zakodowane.
Rozwiązanie
Aby rozwiązać ten problem, zainstaluj jedną z następujących aktualizacji:
- W przypadku programu Exchange Server 2016 zainstaluj aktualizację zbiorczą 9 lub nowszą aktualizację zbiorczą dla programu Exchange Server 2016.
- W przypadku programu Exchange Server 2013 zainstaluj aktualizację zbiorczą 20 lub nowszą aktualizację zbiorczą dla programu Exchange Server 2013.
Ponadto jest dostępna funkcja włączająca powrót do domyślnego zestawu znaków w pliku konfiguracji. Po włączeniu tej funkcji mogą być dostarczane wiadomości e-mail zawierające nieobsługiwane znaki zakodowane w wierszu tematu. Aby włączyć tę funkcję, wykonaj następujące czynności:
Skonfiguruj te dwa pliki: EdgeTransport.exe.config i MSExchangeDelivery.exe.config.
Wskazówka Domyślnie te dwa pliki znajdują się w następującym folderze: C:\Program Files\Microsoft\Exchange Server\V14\Bin, otwórz pliki w Notatniku.
W każdym pliku dodaj następujące elementy konfiguracji w ramach elementu konfiguracji:
Wskazówka Jedyna różnica w tym elemencie to "Wersja". Na przykład użyj wartości "Wersja=15.0.1366.0" dla aktualizacji zbiorczej 20 programu Exchange Server 20, "Wersja=15.1.1462.0" dla aktualizacji skumulowanej 9 programu Exchange Server 2016.
<configSections> <section name="CTS" type="Microsoft.Exchange.Data.Internal.CtsConfigurationSection, Microsoft.Exchange.Data.Common, Version=15.0.1366.0, Culture=Neutral, PublicKeyToken=31bf3856ad364e35" /> </configSections> <CTS> <Globalization> <FallbackToDefaultCharset Fallback="true"/> <DefaultCulture Culture="en"/> </Globalization> </CTS>Uwagi:
a) Sekcja configSections musi być pierwszym elementem elementu konfiguracji, który jest wymuszany przez platformę .NET. W przeciwnym razie usługa transportu przestaje odpowiadać po uruchomieniu.
b) Wersja, kultura i token publiczny zestawu Microsoft.Exchange.Data.Common muszą być poprawne. Można je znaleźć w globalnej pamięci podręcznej zestawów (GAC).
c) Element FallbackToDefaultCharset służy do włączania i wyłączania tej funkcji. Tę funkcję można włączyć lub wyłączyć, ustawiając wartość atrybutu Fallback na wartość prawda lub fałsz.
d) Element DefaultCUlture służy do określenia kultury rezerwowej, jeśli zestaw znaków w wiadomości e-mail nie jest obsługiwany. Dla atrybutu Kultura należy ustawić prawidłową nazwę kultury. Jeśli nie, program Exchange użyje kultury bieżącego wątku jako kultury rezerwowej. W przykładowej konfiguracji kultura rezerwowa jest ustawiona na wartość "en".
Zapisz pliki EdgeTransport.exe.config i MSExchangeDelivery.exe.config.
Uruchom ponownie usługę transportu, aby zaczęła obowiązywać.
Wskazówka Plik konfiguracyjny należy starannie edytować. Nie ma żadnych śladów ani dzienników zdarzeń na potrzeby diagnostyki. Ta funkcja nie będzie działać zgodnie z oczekiwaniami, jeśli w pliku konfiguracji będzie literówka. Ponadto należy pamiętać, że w przypadku wiadomości z nieobsługiwanym zestawem znaków nie będziemy gwarantować niczego związanego z odebraną wiadomością ani wierności jakichkolwiek komunikatów powodowanych przez tę wiadomość, gdy zostanie odebrana.
Ponadto oto powiązany link, do którego możesz się odwołać: Wiadomość e-mail zawierająca nieobsługiwane znaki zakodowane w wierszu tematu nie jest dostarczana w środowisku programu Exchange Server 2010.
Więcej informacji
Po zastosowaniu tej aktualizacji razem z aktualizacją pliku EdgeTransport.exe.config może wystąpić problem. Gdy plik EdgeTransport.exe.config jest aktualizowany przy użyciu Set-AppConfigValue podczas instalacji późniejszej aktualizacji zbiorczej dla Exchange Server 2016 lub Exchange Server 2013, może zostać wyświetlony następujący komunikat o błędzie:
Microsoft.Exchange.Data.Common.LocalizedException: Set-AppConfigValue: Sekcja węzła została znaleziona w pliku F:\Program Files\Microsoft\Exchange Server\V15\bin\EdgeTransport.exe.config, ale nie jest unikatowa.
Aby rozwiązać ten problem, przed uruchomieniem późniejszej aktualizacji zbiorczej dla Exchange Server 2016 lub Exchange Server 2013 należy wykonać następujące czynności, aby usunąć z pliku EdgeTransport.exe.config wymienioną powyżej sekcję CTS:
- Zatrzymaj wszystkie usługi programu Exchange.
- Skopiuj i zapisz plik EdgeTransport.exe.config.
- Usuń z pliku EdgeTransport.exe.config następującą sekcję CTS (wymienioną powyżej).
<CTS>
<Globalizacja><FallbackToDefaultCharset Fallback="true"/>
<DefaultCulture Culture="pl"/>
</Globalizacja>
</CTS>
- Zapisz zaktualizowany plik EdgeTransport.exe.config.
- Uruchom konfigurację nowszej aktualizacji zbiorczej programu Exchange Server 2016 lub Exchange Server 2013.
- Po ukończeniu konfiguracji wykonaj czynności opisane w tym artykule, aby zaktualizować plik EdgeTransport.exe.config.
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Źródła informacji
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.