【问题标题】:Attach file existing on FTP server to mail in C# .NET将 FTP 服务器上现有的文件附加到 C# .NET 中的邮件
【发布时间】:2018-05-27 09:53:38
【问题描述】:

我正在尝试将保存在 FTP 服务器上的文件附加到 SMTP 邮件消息中。

mail.Body = body;

System.Net.Mail.Attachment attachment;

attachment = new System.Net.Mail.Attachment(Server.MapPath("Documents/quote.pdf"));
mail.Attachments.Add(attachment);
SmtpServer.Send(mail);

但是,由于身份验证问题,查找附件似乎很麻烦。我不太确定是否应该使用 RequestStream 并获得响应,或者是否有办法验证读取路径并将附件添加到电子邮件的路径。 RequestStream 的问题是我无法获取文件名,这是我在创建附件时需要添加的参数。 有什么建议吗?提前致谢。

【问题讨论】:

  • 你指的是什么RequestStream“无法获取文件名” 是什么意思?如果您想从 FTP 检索文件,您必须知道它的名称。毕竟名字就在你的代码里!

标签: c# asp.net .net ftp email-attachments


【解决方案1】:

使用FtpWebRequest 获取引用FTP 服务器上文件内容的Stream。然后使用overload of Attachment constructor that takes a Stream

const string filename = "quote.pdf";

var url = "ftp://ftp.example.com/remote/path/" + filename;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.DownloadFile;

Stream contentStream = request.GetResponse().GetResponseStream();
Attachment attachment = new System.Net.Mail.Attachment(contentStream, filename);

【讨论】:

  • 像魅力一样工作。谢谢一百万!
  • 抱歉。对此很陌生。上次我点击了赞成图标,我没有足够的声誉哈哈。
猜你喜欢
  • 2015-07-18
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多