//возможное неудобство с постоянным переходом из корневой папки в целевую, но не все ftp поддерживают работу с относительными путями public override List <MessageData> GetMessageData(MessageInfo info) { var name = TaskInfo["Path"].IsEmpty() ? info.Name : FTPSClient.GetPath(TaskInfo["Path"] + "/" + info.Name); var tempFile = Path.Combine(ftpTemp, GetTempFileName(info)); telecom.DownloadFile(name, tempFile); //можно сделать докачку return(new List <MessageData>() { new MessageData(info.Name, new FileInfo(tempFile).OpenRead()) }); }