Прикрепить файл, существующий на FTP-сервере, к почте в C # .NET - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь прикрепить файл, сохраненный на 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 заключается в том, что я не могу получить имя файла, которое мне нужно добавить в качестве параметра при создании вложения.Любой совет?Заранее спасибо.

1 Ответ

0 голосов
/ 28 мая 2018

Используйте FtpWebRequest для получения Stream в отношении содержимого файла на FTP-сервере.А затем используйте перегрузку конструктора Attachment, которая принимает Stream.

const string filename = "quote.pdf";

FtpWebRequest request =
    (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/" + filename);
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);
...