在C# .NET中将存在于FTP服务器上的文件附加到电子邮件

3
我试图将保存在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中检索文件,你必须知道它的名称。毕竟,这个名称在你的代码中! - Martin Prikryl
1个回答

2

使用 FtpWebRequest 获取指向FTP服务器上文件内容的 Stream。然后使用一个 接受 Stream 参数的 Attachment 构造函数重载

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);

运行得非常好,万分感谢! - Zayd Chopdat
1
抱歉,我是新手。上次我点击了点赞图标,但是我的声望不够,哈哈。 - Zayd Chopdat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接