Mieć program .NET, który używa przestrzeni nazw System.Net.Main do wysyłania wiadomości e-mail przez SMTP.
Jest na stronie klienta, więc stamtąd przejdzie przez (serię?) Serwerów przekaźnikowych SMTP, zanim dotrze do miejsca docelowego.
W tej chwili nie mam informacji o tej infrastrukturze odtwarzania / wysyłania wiadomości e-mail smtp (a uzyskanie tych informacji będzie trudne).
Gdzieś wzdłuż linii wstawiany jest wykrzyknik do długich adresów URL w wiadomości e-mail około 100 znaków od początku linii.
EDYCJA - W rzeczywistości znalazłem około 1000 znaków
Nie dzieje się tak w systemie testowym ani w setkach innych witryn.
Jestem pewien, że ma to związek z kodami ucieczki, aby przełamać długie szeregi.
Czy ktoś ma jakieś pomysły?
Odpowiedzi:
Zostałem tym trafiony.
Jeśli budujesz komunikat HTML bez powrotu karetki, możesz dostać błędy gdzieś wokół znaku 1000 znaków.
Rozwiązaniem jest dodanie kilku znaków \ r \ n, tak aby każdy wiersz był mniejszy niż 1000 (lub 988, jeśli nie policzysz znaków \ r \ n).
Sekcja 2.1.1. Limity długości linii według RFC 2822, aby uzyskać więcej informacji:
źródło
Zawijanie określonej liczby znaków jest zwykle problemem klienta. Jeśli nie widzisz go w innych witrynach lub na testowej maszynie, nie sądzę, że to twój kod. Sprawdź, czy nie możesz dowiedzieć się, jakiego klienta używa się do odebrania wiadomości - może to być stara, chrupiąca rzecz, która polega na automatycznym zawijaniu określonej liczby znaków.
źródło
Nie wygląda na to, że aplikacja .Net powoduje problem, jeśli problem nie występuje na wielu innych stronach, na których działa ten sam kod. Czy strona powodująca problemy znajduje się za zaporą ogniową lub urządzeniem antyspamowym, które może monitorować strumień smtp? Jeśli tak, może istnieć reguła dotycząca obcinania długich adresów URL, która następnie powoduje skrócenie adresów URL w wiadomości e-mail.
źródło