如何通过C#中的电子邮件发送本地链接(共享服务器链接)?

时间:2015-07-20 03:32:39

标签: c# html file hyperlink datatables

我正在实施一个应用程序,它向公司员工发送电子邮件。该电子邮件包含一个超链接,该超链接指向共享服务器文件夹上的pdf文件。

服务器文件夹的示例网址:

\\server_name\folder_parent\folder_child\file.pdf

在我的C#代码中,我使用一个字符串来包含html代码,如下面的代码

private static string getHTML(DataTable dt) {   
     string myBuilder = "";
     myBuilder += "<table id='customers' style='font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif; width: 100%; border-collapse: collapse;'";
     myBuilder += "<tr>";
     foreach (DataColumn myColumn in dt.Columns)
     {
         myBuilder += "<th style='font-size: 1.1em; border: 1px solid #98bf21; padding: 5px 7px 4px 7px;background-color: #A7C942;'>";
         myBuilder += myColumn.ColumnName;
         myBuilder += "</th>";
     }    
     myBuilder += "</tr>";
     int count = 0;
     foreach (DataRow myRow in dt.Rows)
     {
         myBuilder += "<tr>";
         if (count % 2 == 0)
         {                    
            foreach (DataColumn myColumn in dt.Columns)
            {
                 myBuilder += "<td style='font-size: 1em; border: 1px solid #98bf21; padding: 3px 7px 2px 7px;'>";
                 if (myColumn.ColumnName == "Address")
                 {
                     myBuilder += "<a href='" + myRow[myColumn.ColumnName].ToString() + "' style='display:block;'>Link!</a>";
                 }
                 else
                 {                                                       
                     myBuilder += myRow[myColumn.ColumnName].ToString();
                 }
                 myBuilder += "</td>";
             }
         }
         else
         {
             foreach (DataColumn myColumn in dt.Columns)
             {
                 myBuilder += "<td style='font-size: 1em; border: 1px solid #98bf21; padding: 3px 7px 2px 7px; color: #000000; background-color: #EAF2D3;'>";
                 if (myColumn.ColumnName == "Address")
                 {                         
                     myBuilder += "<a href='" + myRow[myColumn.ColumnName].ToString() + "' style='display:block;'>Link!</a>";
                 }
                 else
                 {
                      myBuilder += myRow[myColumn.ColumnName].ToString();
                 }
                 myBuilder += "</td>";
             }
         }        
         count++;
         myBuilder += "</tr>";
     }
     myBuilder += "</table>";
     return myBuilder;
 }

此代码从DataTable获取数据,并将其显示为html代码中的表格。

这是DataTable的数据

dt.Rows.Add("bala", "24", "http://www.google.com", "999444444");
dt.Rows.Add("chendur", "23", "http://www.facebook.com", "9999999999");
dt.Rows.Add("chchandru", "22", @"file:///\\server_name\folderA\folderB\file.pdf", "888888888");

因此,当我在chrome(mail.google.com)上打开电子邮件时,该链接包含本地链接,并且该文本中没有超链接。

我尝试使用google或facebook这样的http链接但是有效但文件链接没有,如下图所示。

enter image description here

关于file:///,我尝试编写一个html文件并且有效。

<td><a href="file:///\\server_name\folderA\folderB\file.pdf">LINK</a></td>

我读过很多关于此的文章,他们说&#34;安全问题&#34;。

事情是这个应用程序只在同一家公司的员工之间发送电子邮件,他们使用共享服务器来使用互联网和发送电子邮件。 (公司中的所有计算机都连接到同一台服务器)。

那么有没有可能像这种情况发送本地链接?如果它没有,我有什么可能解决这种情况的解决方案吗?该要求只是&#34;您点击电子邮件中的链接,它会自动在本地链接上打开文件。&#34;

p / s:我当然得到了这个

MailMessage completeMessage = new MailMessage(From, To, Subject, mailBody);
completeMessage.IsBodyHtml = true;

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但我遇到了同样的问题..

而不是发送地址作为链接我发送网络位置打开和关闭雪佛龙,这种方式将outlook作为一个整体链接。 details

因此我们有内部网应用程序,它将网络文件位置发送给员工,所有员工都使用outlook。我发送像你这样的文件位置

  

为\\ server_name \ folder_parent \ folder_child \ file.pdf

以下代码:

myBuilder += @"&lt;\\server_name\folder_parent\folder_child\file.pdf&gt;";

PS:我的MailMessage实例有utf8编码。

mail.BodyEncoding = Encoding.UTF8;