由于网络路径中的空格,电子邮件正文中省略了部分网络路径

问题描述 投票:0回答:1

我正在尝试使用 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”的整个网络路径放在邮件正文中

任何帮助将不胜感激。

c# smtpclient
1个回答
0
投票

我相信这应该有效:

var url = $"<a href='{System.Net.WebUtility.UrlEncode(@"\\pcm-test2\shared\PCM_GEO_TEST\NGS Forms")}'>HERE</a>";

这将对空格进行编码,因此它不会被解释为两个单独的值。请注意,您的

StringBuilder
毫无意义,不应在此处使用。

© www.soinside.com 2019 - 2024. All rights reserved.