Saya mengirim email menggunakan kerangka dotnet. Berikut adalah template yang saya gunakan untuk membuat pesan:
Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%
Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For: %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%
Ketika pesan diterima dalam pandangan, pandangan memberitahu saya "Jeda baris tambahan dalam pesan ini telah dihapus". Dan pesannya ditampilkan seperti ini:
Date of Hire: 9/28/2001
Annual Salary: $100,000
Reason for Request: New Hire
Name of Voluntary Employee: Ronald Weasley Total Coverage Applied For: $500,000 Guaranteed Coverage Portion: $300,000.00 Amount Subject to Medical Evident: $200,000
Perhatikan bagaimana Outlook salah menghapus jeda baris yang diperlukan setelah nama, EECoverageAmount, dll ...
Penting bagi penerima email untuk mendapatkan email yang diformat dengan benar, dan saya harus berasumsi bahwa beberapa dari mereka menggunakan outlook 2003. Saya juga tidak dapat berasumsi bahwa mereka akan cukup tahu untuk mematikan fitur autoclean agar pesan dapat diformat dengan benar.
Saya telah melihat pesan ini di klien email lain dan ditampilkan dengan benar
beberapa informasi lebih lanjut:
- Saya menggunakan UTF-8 BodyEncoding (msg.BodyEncoding = System.Text.Encoding.UTF8)
- Msg.Body sedang dibaca dari file teks berenkode UTF-8, dan setiap baris diakhiri dengan crlf.
Pertanyaan: Bagaimana cara mengubah format pesan untuk menghindari masalah ini?
\r\n
. Itu berhasil untuk saya.Jawaban:
Mulailah setiap baris dengan 2 spasi dan pandangan akan "tertipu" untuk mempertahankan pemformatan Anda.
Jadi berubah
untuk
Inilah artikel yang saya temukan ketika meneliti masalah ini yang masuk ke dalam sedikit lebih dalam daripada jawaban saya.
sumber
Regex.Replace(messageBody, @"^(?!\s\s)", " ", RegexOptions.Multiline);
Anda juga dapat memasukkan karakter tab di akhir baris (tepat sebelum CR LF). Ruang putih ekstra ini akan berada di akhir baris dan karenanya tidak terlihat oleh pengguna. Anda mungkin lebih suka ini daripada harus menyisipkan spasi di sebelah kiri. Perhatikan bahwa satu spasi tidak cukup (meskipun mungkin banyak spasi akan membantu, saya tidak tahu.)
sumber
Regex.Replace(messageBody, @"(?<!\t)((?<!\r)(?=\n)|(?=\r\n))", "\t", RegexOptions.Multiline)
Jawaban ini adalah tentang cara "menonaktifkan" fitur dari Klien Outlook.
FYI: Saya menggunakan Outlook 2007
sumber
Saya selalu lebih beruntung dalam memformat email sebagai html. Anda mungkin masih memiliki masalah pengguna akhir karena harus mengatur klien untuk mengizinkan format html, tetapi mereka biasanya lebih akrab dengan ini karena begitu banyak email yang datang dengan format html. Anda juga memiliki sedikit pekerjaan untuk menambahkan tag html, tetapi hasil akhirnya jauh lebih dapat dikontrol.
@ephemient juga menyarankan: Kirim sebagai HTML dan teks biasa. Klien yang baik akan menunjukkan yang terakhir, Outlook akan menampilkan yang pertama, semua orang senang (kecuali programmer yang harus melakukan lebih banyak pekerjaan).
sumber
Menambahkan "\ t \ r \ n" (\ t untuk TAB) alih-alih "\ r \ n" berhasil untuk saya di Outlook 2010.
sumber
"\r\n "
(dua spasi, tanpa tab) setelah baris baru sebagai peretasan serupa. Berfungsi di Outlook 2016. YMMV.Memperluas jawaban Doug L , karena menurut saya perpesanan HTML bahkan lebih tersebar di mana-mana dan diterima sekarang daripada di tahun 2008 ketika jawaban itu diposting. Berikut ini sedikit cuplikan c # untuk membantu mengubah isi dan mengirim pesan dalam format HTML:
sumber
Saya melihat masalah yang sama saat membuat email teks biasa dan kemudian membacanya dengan Outlook 2003 SP3. Tampaknya Anda dapat menghindari proses penghapusan dengan menjaga panjang baris di bawah 40 karakter. Mungkin tidak selalu praktis.
sumber
Letakkan teks di
<pre>
Tag dan pandangan akan memformat dan menampilkan teks dengan benar.saya mendefinisikannya dalam CSS inline di HTML Body seperti:
CSS:
saya mendefinisikan font-family untuk mengatur font.
HTML:
sumber
Pembersihan otomatis adalah fitur pandangan yang menghilangkan jeda baris ekstra. Anda bisa mencegahnya dengan dua cara.
Cara pertama adalah menambahkan setidaknya 2 spasi ekstra sebelum baris saat mengirim email melalui kode. Anda dapat menambahkan spasi ekstra ini hanya sebelum garis-garis yang secara otomatis dihapus oleh pandangan.
Cara kedua adalah mengubah pengaturan pandangan yang akan mencegah pandangan dari menghapus jeda baris tambahan.
sumber
Teks saya menyertakan '\ r \ n' tetapi Outlook 2010 tidak membuat jeda baris. Buat token baris yang dibatasi oleh '\ r \ n' dan token amplop dengan tag HTML Paragraph. Format email saya adalah HTML. Saya membuat Badan HTML untuk email saya dalam kode di bawah ini.
sumber
Ubah penghentian baris Anda dari crlf menjadi cr atau lf.
Saya menduga bahwa bagian atas email hanya menggunakan cr (atau lf), dan Outlook mengharapkan email lainnya mengikuti format yang sama.
sumber