我正在尝试使用 C# 控制台应用程序向我们的员工发送电子邮件。在电子邮件的正文中,我需要嵌入一个网络路径。我正在使用 stringBuilder 创建电子邮件的正文。网络路径是这样的:
\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms
我创建了 C# 代码来嵌入这样的网络路径:
StringBuilder TelURL = new StringBuilder().Append("<a href=" + @"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms
").Append(">HERE</a>");
我把上面的字符串放在C#的邮件正文中。当我收到电子邮件时,我看到了“HERE”链接,但是当我将鼠标悬停在“HERE”上时,我看到了这样的网络路径: \pcm-test2\shared\PCM_GEO_TEST\NGS
不知何故,“表单”部分没有出现在电子邮件正文中。这是我的完整代码:
public void sendEmail(List<string> toList)
{
string from = "[email protected]";
string UserName = ConfigurationManager.AppSettings["UserName"].ToString();
string password = ConfigurationManager.AppSettings["password"].ToString();
StringBuilder TelURL = new StringBuilder().Append("<a href=" + @"\\pcm- test2\shared\PCM_GEO_TEST\NGS Forms
").Append(">HERE</a>");
using (MailMessage mm = new MailMessage())
{
mm.From = new MailAddress(from);
mm.To.Add(new MailAddress("[email protected]"));
mm.Subject = "Test subject";
mm.Body = TelURL.ToString();
mm.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential(UserName, password);
client.Port = 111;
client.EnableSsl = true;
client.Host = "smtp.office365.com";
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(mm);
}
}
如何将带有“Forms”的整个网络路径放在邮件正文中
任何帮助将不胜感激。
我相信这应该有效:
var url = $"<a href='{System.Net.WebUtility.UrlEncode(@"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms")}'>HERE</a>";
这将对空格进行编码,因此它不会被解释为两个单独的值。请注意,您的
StringBuilder
毫无意义,不应在此处使用。