如何将 MailMessage 对象保存到磁盘作为 *.eml 或 *.msg 文件
如何将 MailMessage 对象保存到磁盘? MailMessage 对象不公开任何 Save() 方法。
如果它以任何格式保存,*.eml 或 *.msg,我都没有问题。知道如何做到这一点吗?
How do I save MailMessage object to the disk? The MailMessage object does not expose any Save() methods.
I dont have a problem if it saves in any format, *.eml or *.msg. Any idea how to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
为简单起见,我将仅引用 连接项:
您应该能够使用空构造函数而不是列出的构造函数,因为无论如何它都不会发送它。
For simplicity, I'll just quote an explanation from a Connect item:
You should be able to use the empty constructor instead of the one listed, as it won't be sending it anyway.
下面是一个扩展方法,用于将 MailMessage 转换为包含 EML 数据的流。
由于它使用文件系统,这显然有点黑客行为,但它确实有效。
然后,您可以获取返回的流并按照您的意愿处理它,包括保存到磁盘上的其他位置或存储在数据库字段中,甚至作为附件通过电子邮件发送。
Here's an extension method to convert a MailMessage to a stream containing the EML data.
Its obviously a bit of a hack as it uses the file system, but it works.
You can then take the stream thats returned and do as you want with it, including saving to another location on disk or storing in a database field, or even emailing as an attachment.
如果您使用Mailkit。只需编写下面的代码
If you are using Mailkit. Just write below code
在社区的帮助下,我提出了.NET 5的解决方案。我已经合并了这个旧解决方案,其中包含建议 此 帖子并受到 Mailkit 的启发,这产生了很好的扩展方法,没有不必要的依赖项
用法
另外,如果您正在使用
MemoryStream
并希望获得string 中的结果
,只需更改扩展方法的返回类型并在最后写入Enjoy
With the help of community I came up with an solution for .NET 5. I have combined this old solution with suggestions in this post and got inspired by Mailkit which resulted in nice extension method without unnecessary dependencies
Usage
Also if you are using
MemoryStream
and want to get result instring
, just change the return type of the extension method and at the end writeEnjoy
由于某种原因,client.send 失败了(在使用该方法实际发送之后),因此我插入了良好的 'ole CDO 和 ADODB 流。在设置 .Message 值之前,我还必须使用 template.eml 加载 CDO.message。但它有效。
由于上面是 C 语言,这里是 VB 语言
For one reason or another the client.send failed (right after an actual send using that method) so I plugged in good 'ole CDO and ADODB stream. I also had to load CDO.message with a template.eml before setting the .Message values. But it works.
Since the above one is C here is one for VB
尝试一下
,请使用这 2 个参考
(使用 MailBee;)
(使用MailBee.Mime;)
try this
please use these 2 reference
( using MailBee;)
( using MailBee.Mime;)