提问人:rimi 提问时间:5/3/2023 最后编辑:rimi 更新时间:5/4/2023 访问量:31
由于网络路径中的空格,电子邮件正文中省略了部分网络路径
part of the network path is omitted from the email body because of the space in network path
问:
我正在尝试使用 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\共享\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);
}
}
我怎样才能将带有“表单”的整个网络路径放在电子邮件的正文中。当我尝试使用
var URL = $"<a href='{System.Net.WebUtility.UrlEncode(@"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms")}'>HERE</a>";
它在电子邮件正文中显示如下所示,并带有加号,如您所见:
任何帮助将不胜感激。
答:
0赞
jmcilhinney
5/3/2023
#1
我相信这应该有效:
var url = $"<a href='{System.Net.WebUtility.UrlEncode(@"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms")}'>HERE</a>";
这将对空间进行编码,因此它不会被解释为两个单独的值。请注意,ur 毫无意义,不应在此处使用。StringBuilder
评论
0赞
rimi
5/3/2023
它仍然不起作用,请在我的原始问题中查看上面的屏幕截图。我必须将 url 转换为 url.tostring 才能在电子邮件正文中使用它
1赞
jmcilhinney
5/3/2023
@rimi,我想知道您是否需要使用实际的 URL,而不是 UNC 路径。我会把它放在评论中,如果它有效,我会把它添加到我的答案中。而不是 ,请尝试 。@"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms"
"file://pcm-test2/shared/PCM_GEO_TEST/NGS Forms"
0赞
rimi
5/3/2023
我将如何放置“这里”。我需要把它放在 <a href 中吗
0赞
jmcilhinney
5/3/2023
阅读我写的实际单词。将我说要替换的部分替换为我说要替换的部分。其他什么都没有改变。
1赞
Anjali
5/4/2023
#2
将 TelURL 字符串替换为以下内容:
StringBuilder TelURL = new StringBuilder().Append("<a href=\"" + @"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms" + "\">HERE</a>");
整个代码将如下所示:
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" + "\">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);
}
}
评论
0赞
rimi
5/4/2023
这马上就奏效了
评论