2010-04-30 7 views
0

J'envoie une chaîne en tant que message via SMTP. Mais le courrier final ne prend pas en compte les onglets et les nouvelles lignes. Quel pourrait être le problème Merci d'avanceSMTP: Newline Problème

Répondre

3

Je suppose que vous envoyez le courrier au format HTML, auquel cas les espaces, les onglets et les retours à la ligne seront tous réduits à un espace.

Vous devrez convertir les onglets en &nbsp; ou similaire, et remplacer les lignes de début par les étiquettes <br> (ou envelopper les paragraphes avec les étiquettes <p>).

Alternativement, vous pouvez envoyer le courrier en texte brut, et ces caractères seront conservés:

var mail = new MailMessage(); 
mail.IsBodyHtml = false; 
... 
+0

Merci OrbMan ... Il a aidé – user279244

3

Essayez d'ajouter l'en-tête suivant:

Mime-Type: text/plain 

Cela fera la plupart des lecteurs de courriel garder la espaces intacts, et la plupart du temps appliquer une police à largeur fixe.

Si vous utilisez déjà le courrier HTML, encapsuler tout ce qui est à l'intérieur d'un <pre></pre> devrait le faire. Ou, si vous êtes en CSS, vous pouvez faire <div style="white-space: pre;">...</div>.

Aussi, assurez-vous que ce que vous envoyez via le serveur a \r\n (0x0D, 0x0A) les fins de ligne et non seulement \n (UNIX) ou \r (Mac).

+0

Merci! J'ai seulement commencé à obtenir une police à largeur fixe (nécessaire pour préserver le formatage du message) quand je suis passé du texte brut (IsBodyHtml = false) à HTML (IsBodyHtml = true) et enveloppant le corps avec

, comme vous l'avez suggéré. –
                        
                            
    spotcatbug
                                
                            
                        
                    

+0

J'ai eu un problème similaire, et j'ai essayé différentes combinaisons que j'ai lues ici sur SO et la suggestion

 a fait l'affaire! Merci! –
                        
                            
    djmarquette