您可以使用逐字字符串创建多行字符串,即以@ 开头的字符串。 $ 用于对普通字符串和逐字字符串进行字符串插值。 但是这并不意味着它们会像您期望的那样出现在电子邮件正文中。
回答您的具体问题,这将创建一个多行字符串:
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开头。 documentation page of the class 警告:
我们不建议您将 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);
}
Create Messages 页面展示了如何创建纯文本或 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", "blah@gmail.com"));
message.Subject = "Special Request";
var builder = new BodyBuilder ();
builder.TextBody = plainBody;
builder.HtmlBody = htmlBody;
message.Body = builder.ToMessageBody ();