如何在 C# 中存盤陳述句,例如以下方式
string EmailBody = "Request no.- ('" objUserModel.ID "') has been raised for special
vehicle by requester-( '" RequesterInfo "'). "
"ORG_Unit:'" objUserModel.OrgUnit "'"
"TDC:'" objUserModel.TDC "'"
"Customer Name:'" objUserModel.CustName "'"
"Supply Plant:'" objUserModel.CustName "'";
我試圖在電子郵件中的多行中顯示此變數,因為我需要將它存盤在字串中的多行中。
我已經看到了 @$"" 的變體,但它對我不起作用。
uj5u.com熱心網友回復:
查看用于包含欄位值的插值字串。
對于新行,需要注意三個不同的專案:Enivronment.NewLine常量、\n字符文字和 HTML<br>元素。最后一點對于使用 HTML 正文的電子郵件尤其重要。
在這種情況下,我建議使用 C# 多行字串文字,其中包含額外結束行的插值,您可以根據平臺的需要設定或不設定。
所以你最終得到了這個:
string br = ""; // set this to "<br>" for HTML emails
string EmailBody =
$@"Request no.- ('{objUserModel.ID}') has been raised for special{br}
vehicle by requester-( '{RequesterInfo}').{br}
{br}
ORG_Unit:'{objUserModel.OrgUnit}'{br}
TDC:'{objUserModel.TDC}'{br}
Customer Name:'{objUserModel.CustName}'{br}
Supply Plant:'{objUserModel.CustName}'";
由于串聯,原始代碼遇到了麻煩。字串的每一行代碼在最后都被分解成這樣:" ,在下一行繼續使用新的字串文字。這樣,代碼中的換行符在結果字串中丟失了。
此處的代碼通過將所有內容放入相同的字串文字來解決此問題。只有一組雙引號定義了整個字串,現在包括代碼中內置的換行符。使用此技術要注意的一件事是,您希望將字串一直向左移動,而不管代碼中的任何其他縮進。
uj5u.com熱心網友回復:
我建議加入required 行delimiter,例如
// Set "<br/>" if you want HTML delimiter
// Put "\n" to have a new line,
// Use Environment.NewLine to have OS specific delimiter
string delimiter = "<br/>";
string EmailBody = string.Join(delimiter,
$"Request no.- ('{objUserModel.ID}') has been raised for special vehicle by requester-( '{RequesterInfo}'). ",
$"ORG_Unit:'{objUserModel.OrgUnit}'",
$"TDC:'{objUserModel.TDC}'",
$"Customer Name:'{objUserModel.CustName}'",
$"Supply Plant:'{objUserModel.CustName}'"
);
uj5u.com熱心網友回復:
您可以使用逐字字串創建多行字串,即以 . 開頭的字串@。$用于對普通字串和逐字字串進行字串插值。但這并不意味著它們會像您期望的那樣出現在電子郵件正文中。
回答您的具體問題,這將創建一個多行字串:
string EmailBody = $@"Request no.- ('{objUserModel.ID}') has been raised for special
vehicle by requester-'({RequesterInfo}').
ORG_Unit:'{objUserModel.OrgUnit}'
TDC:'{objUserModel.TDC}'
Customer Name:'{objUserModel.CustName }'
Supply Plant:'{objUserModel.CustName}'";
列印它會產生:
Request no.- ('3') has been raised for special
vehicle by requester-'(123456').
ORG_Unit:'Blah'
TDC:'XYZ'
Customer Name:'Gone'
Supply Plant:'Gone'
所有制表符和空格都包含在字串中。為了避免這種情況,每一行都應該不縮進:
string EmailBody = @$"Request no.- ('{objUserModel.ID}') has been raised for special
vehicle by requester-'({RequesterInfo}').
ORG_Unit:'{objUserModel.OrgUnit}'
TDC:'{objUserModel.TDC}'
Customer Name:'{objUserModel.CustName }'
Supply Plant:'{objUserModel.CustName}'";
這會產生:
Request no.- ('3') has been raised for special
vehicle by requester-'(123456').
ORG_Unit:'Blah'
TDC:'XYZ'
Customer Name:'Gone'
Supply Plant:'Gone'
運算子的順序并不重要。@$行為與 相同$@。
發送格式良好的電子郵件
這是一個不同的問題,其答案從Don't Use .NET's SmtpClient開始。該類的檔案頁面警告:
我們不建議您將 SmtpClient 類用于新開發,因為 SmtpClient 不支持許多現代協議。請改用MailKit或其他庫。有關更多資訊,請參閱 SmtpClient 不應在 GitHub 上使用。
使用 MailKit 發送訊息所需的代碼類似于舊的 SmptClient。
using (var client = new SmtpClient ())
{
await client.ConnectAsync("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect);
await client.AuthenticateAsync("username", "password");
await client.SendAsync(message);
await client.DisconnectAsync(true);
}
創建訊息頁面顯示如何創建純文本或 HTML 訊息。一些較舊的電子郵件客戶端不支持 HTML,因此通常需要同時創建純文本和 HTML 訊息。
字串插值和逐字字串可用于為這兩個部分創建文本:
string plainBody = @$"Request no.- ('{objUserModel.ID}') has been raised for special
vehicle by requester-'({RequesterInfo}').
ORG_Unit:'{objUserModel.OrgUnit}'
TDC:'{objUserModel.TDC}'
Customer Name:'{objUserModel.CustName }'
Supply Plant:'{objUserModel.CustName}'";
string htmlBody = @$"<div>Request no.- ('{objUserModel.ID}') has been raised for special
vehicle by requester-'({RequesterInfo}').
</div>
<dl>
<dt>ORG_Unit:</dt><dd>'{objUserModel.OrgUnit}'</dd>
<dt>TDC:</dt><dd>'{objUserModel.TDC}'</dd?
<dt>Customer Name:</dt><dd>'{objUserModel.CustName }'</dd?
<dt>Supply Plant:</dt><dd>'{objUserModel.CustName}'</dd>
</dl>";
這些可以與以下內容組合在一封電子郵件中:
var message = new MimeMessage ();
message.From.Add (new MailboxAddress ("Blah Blah", "[email protected]"));
message.Subject = "Special Request";
var builder = new BodyBuilder ();
builder.TextBody = plainBody;
builder.HtmlBody = htmlBody;
message.Body = builder.ToMessageBody ();
uj5u.com熱心網友回復:
嘗試 Environment.NewLine在需要換行符的地方使用。
uj5u.com熱心網友回復:
"vehicle by requester - ('" RequesterInfo "'). " "\n" "ORG_Unit:'" objUserModel.OrgUnit "'" "\n"
"TDC:'" objUserModel.TDC "'" "\n" "Customer Name:'" objUserModel.CustName "'" "\n"
"Supply Plant:'" objUserModel.CustName "'";```
If i have understood it correctly you just add ``` "\n" ```
uj5u.com熱心網友回復:
使用字串插值,您可以在這里實作您想要做的事情,例如:
string EmailBody = $"Request no.- ('\"{objUserModel.ID}\"') has been raised
注意“之前的\
如果您想在字串中添加新行,您可以添加 string1 $" this string is writen on one line"; string2 $" 這個字串\n寫在兩行";
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/430862.html
上一篇:使用自定義物件引數發布未獲取資料
