Csharp/C#教程:C#从邮件附件中获取文件名分享


C#从邮件附件中获取文件名

我有一个简单的C#应用​​程序发送SMTP电子邮件(使用System.Net.Mail类)。 发送(通过电子邮件发送)MailMessage对象后,我想遍历附件列表并删除与这些附件相关联的原始文件…但我很难找到与每个附件关联的完整文件路径 – 而不保留我的自己的附件文件路径集合。 必须有一种从附件对象中提取完整文件路径的好方法。

我知道这必须简单,但我花了很多时间在这个……时间问别人。

您可以

但请记住,邮件消息(以及附件及其流)可能无法立即收集或清理,因此您可能无法立即删除该文件。 你可以做更好的子类化附件,并记录文件名和子类Dispose(在基本配置后执行)进行删除,如果你确实需要这样做的话。

如果通过Attachment构造函数使用filePath参数添加附件,则可以通过ContentStream属性检索这些附件,其类型为FileStream 。 以下是如何获取附加文件的文件名:

 var fileNames = message.Attachments .Select(a => a.ContentStream) .OfType() .Select(fs => fs.Name); 

但是不要忘记先放置MailMessage对象,否则你将无法删除这些附件:

 IEnumerable attachments = null; using (var message = new MailMessage()) { ... attachments = message.Attachments .Select(a => a.ContentStream) .OfType() .Select(fs => fs.Name); } foreach (var attachment in attachments ) { File.Delete(attachment); } 

通常最容易采用稍微不同的方法并通过内存流而不是文件附加。 这样你就可以避免将文件保存到磁盘并在之后清理它们的所有问题。

这篇简短的文章。

上述就是C#学习教程:C#从邮件附件中获取文件名分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/959100.html

(0)
上一篇 2021年11月23日
下一篇 2021年11月23日

精彩推荐