在c#中添加动态附件到电子邮件

时间:2015-03-16 15:25:40

标签: c# .net winforms mailmessage

民间,
使用创建电子邮件的System.Diagnostics.Process.Start("mailto:方法,有没有办法将动态附件(不是已保存的文件)添加到电子邮件中?

我和这个question中的人完全一样,但是没有人使用mailto:方法回答。 我只是想知道它是否可能,以及如何做到这一点。

我试过这个但是无济于事:

System.IO.MemoryStream ms = new System.IO.MemoryStream(generatedReport.DocumentBytes);
System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);
Attachment attachment = new Attachment(ms, ct);
attachment.ContentDisposition.FileName = "output.pdf";                            
System.Diagnostics.Process.Start("mailto:myemail &SUBJECT=Test Subject BODY=Body Text&Attachment=" + attachment);
ms.Close();

感谢任何和所有帮助

1 个答案:

答案 0 :(得分:3)

一般来说,the mailto: URL scheme does not support attachments。因此,如果您需要它可靠地使用附件,则根本不应该使用它。

显然,some mail clients still support passing Attachment=...,但他们希望...部分是本地文件的路径。因此,在您的情况下,您需要

  • 将文件保存到磁盘(您可以在临时文件夹中使用临时文件名),然后
  • 将文件路径传递到mailto:链接。

请注意,您必须保留文件,直到用户实际发送邮件为止,因此您可能需要考虑稍后“清理”这些临时文件。