Mam tekst typu "Cześć, \ r \ n to jest test \ r \ n Dzięki" Wysyłam wiadomość pocztową przy użyciu klasy MailMessage. Ustawiłem właściwość "IsBodyHtml" na wartość false. Problem polega na tym, że otrzymuję maile bez podziałów linii. Czy możesz dać mi znać, czego mi brakuje?Podziały linii są ignorowane podczas wysyłania poczty jako zwykły tekst.
Odpowiedz
Użyj Environment.NewLine
msdn zamiast \ r \ n.
Aby móc włączać podziały wiersza, a nie tylko zwykły test w poczcie, trzeba mieć ustawiony kod HTML na prawdę, tak myślę.
You może mieć podziały wierszy, po prostu nie można mieć 2 linii podziału i linii z kropką i nic więcej.Ta konkretna sekwencja oznacza koniec wiadomości, a serwer SMTP przechodzi zezowaty. – Tremmors
Myślę, że łatwiej jest po prostu wysłać e-mail w formacie HTML. Ktoś (najprawdopodobniej z marketingu/zarządzania) poprosi o ładną wiadomość e-mail, gdy zobaczy zwykły tekst, a będziesz musiał tylko powtórzyć. Rozumiem jednak, że istnieją okoliczności, w których można wysłać tylko zwykły e-mail. – Dean
Mieliśmy ten sam problem, ale jeśli zdefiniować wiadomości naraz w String, w przeciwieństwie do StringBuilder można zdefiniować swoją wiadomość tak:
string message = string.Format(
@"First Line: {0}
Second Line: {1}
ThirdLine: {2}", firstValue, secondValue, thirdValue);
Definiowanie treść wiadomości w ten sposób, a ustawienie IsBodyHtml = false, da ci nowe wiersze, które chcesz.
przeciwnym razie użyj StringBuilder
var sb = new StringBuilder();
sb.AppendLine("FirstLine");
sb.AppendLine("SecondLine");
IsBodyHtml = false załatwił sprawę! Dzięki .. – Vaibhav
Jeśli czytasz maile z Outlook, Outlook może się okazać, że jest usuwanie podziałów wierszy, myśląc, że są dodatkowe podziały wiersza. Czy próbowałeś czytać maile z innego oprogramowania - czy może z poczty internetowej?
+1 masz rację .. :) –
Bardziej skomplikowane Powodem tego może się zdarzyć, że po prostu miał do czynienia z:
- Serwer poczty manipuluje wiadomości wychodzących i dodaje wersję HTML do wiadomości w inny sposób tylko tekst
byłem mając podobny problem tam, gdzie pracowała większość moich linii, ale jedna nie. Jeśli kliknę odpowiedź na e-mail, który nie zawierał podziałów wierszy, oryginalny tekst e-mail pod odpowiedzią wyświetli podział wiersza (co oznacza, że jest to problem związany z perspektywą). Wypróbowałem zalecaną odpowiedź Environment.NewLine i to nic nie zmieniło. W moim przypadku dodanie kropki na końcu instrukcji, w której chciałem nowej linii, a następnie wstawienie \ r \ n, działało. Zgodnie z poprzednim linkiem, który opublikowałem w tej dyskusji, Outlook stosuje pewne reguły w celu odfiltrowania kanałów liniowych. W pytaniu, które rozpoczęło tę dyskusję, zauważam, że nie masz okresu na końcu zdania.
Wysyłałem wiadomość e-mail za pomocą skryptu PowerShell, a także nie otrzymywałem żadnych podziałów linii podczas przeglądania wiadomości w programie Outlook. Dla mnie rozwiązanie w pliku .ps1 było to:
$emailMessage.Body = "First Line" + "`r`n" + "Second Line"
Jest to funkcja w programie Outlook, można go wyłączyć w programie Outlook. Idź do Opcje - Poczta - i pod "Format wiadomości" odznacz "Usuń dodatkowe linie podziału w wiadomościach tekstowych".
Innym rozwiązaniem jest dodanie trzech spacji na końcu każdego wiersza, podczas wysyłania wiadomości. Wydaje się, że program Outlook akceptuje, że nie jest to dodatkowy podział wiersza.
Myślę, że na to pytanie można lepiej odpowiedzieć pod tym linkiem: http://stackoverflow.com/questions/247546/outlook-autocleaning-my-line-breaks-and-screwing-up-my-email-format – user1387916