如何将远程文件附加到C#中的电子邮件中?

时间:2013-09-24 14:34:50

标签: c# wcf

我正在尝试从具有附件的C#(更具体的WCF服务)发送电子邮件。附件不在本地文件系统上,因此它将具有“http:// ...”等路径。

目前,如果我尝试传入url,我会收到一条错误,指出不支持给定路径的格式。

Attachment attachment;
            attachment = new Attachment("https://assets.conestogac.on.ca/wiki/gatewayprocess.png", MediaTypeNames.Application.Octet);
            message.Attachments.Add(attachment);

服务器在处理请求时遇到错误。异常消息是“不支持给定路径的格式”。有关详细信息,请参阅服务器日志。

如何将远程文件作为电子邮件附件附加?

3 个答案:

答案 0 :(得分:2)

您需要使用HttpClient或HttpWebRequest to download the remote file to a Stream`,然后附加下载的数据。

答案 1 :(得分:1)

尝试类似的东西:

var tempFileName = @"c:\tempFolder\gatewayprocess.png";        
System.Net.WebClient webClient = new System.Net.WebClient();
webClient.DownloadFile("https://assets.conestogac.on.ca/wiki/gatewayprocess.png", tempFileName);
message.Attachments.Add(new Attachment(tempFileName));

答案 2 :(得分:0)

也许您可以尝试以下代码:

它会将附件添加为内联附件


  string attachmentPath = Environment.CurrentDirectory + @"\test.png";
  Attachment inline = new Attachment(attachmentPath);
  inline.ContentDisposition.Inline = true;
  inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
  inline.ContentId = contentID;
  inline.ContentType.MediaType = "image/png";
  inline.ContentType.Name = Path.GetFileName(attachmentPath);

  message.Attachments.Add(inline);