iT邦幫忙

0

【已解決】MVC HTML C# 寄信內容的文字可以改變??

  • 分享至 

  • xImage

小弟最近在學習MVC架構網頁設計 最近學使用html寄信,想說要跟gmail依樣在寄信中可以將部分內容的文字改成其他顏色、加粗

嘗試使用kendoe加上UI 但寄出內容卻是textarea裡面 html語法+一般黑色文字
https://ithelp.ithome.com.tw/upload/images/20230626/20161058TJbYIpeFQr.jpg

有請各位神人幫幫忙,謝謝!

HTML、C#、其他套件方法都想嘗試嘗試,再麻煩了謝謝!

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-06-26 16:30:35 檢舉
你的問題是html escape,被編碼成&gt了當然不能正常顯示。
自己去查C#相關的輸出調整就好,C#我不熟不能幫你。
感謝回答,了解,我去研究看看!
我解碼之後寄出他按照解碼後寄出,而沒有改變字體顏色
<p>asdasd</p><p><span style="color:#ff6666;">asdasd</span></p><p><span style="color:#ff0000;">asdasd</span></p><p><span style="color:#660000;">dasd</span></p><p><span style="color:#66ff00;">asdasd</span></p>

我再試試看其他方式,謝謝!!
如果你是透過.net內建的SMTP功能發信,記得要設定IsBodyHtml = true,否則預設會是以Text模式發送.

例:
var message = new MailMessage();
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = true;
如果使用System.Net.Mail.MailMessage
就如樓上p大所說,你少了message.IsBodyHtml = true;
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
Annie
iT邦新手 1 級 ‧ 2023-06-26 15:29:35

您好:
文章附圖好像失效了,看不見~~

單就文字內容來看,您是要使用 html 寄信給 user,但是樣式吃不太到對嗎?
之前我在開發上有類似的經驗,上網爬文後有發現 EDM 若不是純文字,而是有圖文的話,要不跑版好像只能吃 table 格式;有些 css 語法本地開發看起來 OK,但寄出後會發現不如預期,統整後的資訊跟您分享,希望有幫助到:

  1. 所有樣式都寫 inline-style,但如果有一致性要一起設定的樣式可以用 tag 名稱去下 css,而且是寫在 <style> in <head>,因為各信箱都支援。

  2. 查在郵件中各種的 html, css 支援度
    can i email?
    針對裝置較細分的 campaignmonitor 網站

  3. 設計上最大寬度建議650px,詳細可看這個網站

感謝回答,我照片有重新上傳了!
我會在依照您整理的資訊去做嘗試,謝謝!
把字體改變顏色 樣式後寄出 收到的是html escape編碼後的樣子

0
allenlwh
iT邦高手 1 級 ‧ 2023-06-26 17:49:34

我想,如果能收到HTML格式的內容,要改成其他顏色、加粗,問題就不大了。
以下是我之前某一個專案的做法,提供您參考。

using System.Net.Mail;

string CreateHTML = "";
CreateHTML = CreateHTML + "<table border=1 style='color: #1F497D;font-family:Microsoft JhengHei;word-break: break-all; '>";
CreateHTML = CreateHTML + "  <tr>";
CreateHTML = CreateHTML + "    <td>品號</td>";
CreateHTML = CreateHTML + "    <td>品名</td>";
CreateHTML = CreateHTML + "    <td>備註</td>";
CreateHTML = CreateHTML + "    <td>規格</td>";
CreateHTML = CreateHTML + "    <td>品號屬性</td>";
CreateHTML = CreateHTML + "  </tr>";

MailMessage message = new MailMessage();
string mx = "smtp.xxx.tw";
string Body = "";

Body = Body + "<html>";
Body = Body + "<p style='color: #1F497D;font-family:Microsoft JhengHei;font-size:16;'>";
Body = Body + CreateHTML + "<br>";
Body = Body + "</p></html>";
message.Body = Body;
message.IsBodyHtml = true;

try
{
	System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(mx);
	smtp.Send(message);
}

感謝回答,我發現前後加上<html><br>加上去 再把IsBodyHtml改成true就可以了,謝謝參考!

0
programlin
iT邦新手 5 級 ‧ 2023-06-27 08:06:54

如果你是透過.net內建的SMTP功能發信,記得要設定IsBodyHtml = true,否則預設會是以Text模式發送.

例:
var message = new MailMessage();
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = true;

感謝回答,改成IsBodyHtml = true後嘗試幾種方法終於可以了!謝謝!

我要發表回答

立即登入回答