我正在创建eml并使用here中提到的过程将它们保存到一个目录中。
我想知道如何发送这些EML文件?
我尝试使用smtpclient类的对象,但它将mailmessage对象作为参数,我找不到使用这些保存的eml文件创建mailmessage类型的对象的方法。
最佳答案
正确加载eml文件并不像看上去那么容易。您可以在几天内编写95%案例的实现。剩下的5%至少需要几个月;-)。我知道,因为我参与开发了一个。
考虑以下的局限性:
Unicode电子邮件
从右到左语言
更正常见邮件客户端和服务器中众所周知的错误导致的格式错误的EML文件
处理S/mime(加密和签名的电子邮件)
正确处理附件编码的几种方法
处理嵌入到html电子邮件中的内联图像和样式表
确保它正确地解析了mike crispin(mime和imap rfcs的合著者)的aMIME torture message。
确保格式错误的消息不会导致缓冲区过度运行或其他应用程序崩溃
处理分层邮件(带有附加邮件的邮件)
确保它能正确处理非常大的电子邮件
这种解析器的成熟需要多年的时间,并且需要用户不断的反馈。现在.NET框架中没有这样的解析器。在它改变之前,我建议从一个成熟的供应商那里获得一个三方mime解析器。
下面的代码使用了我们的Rebex Secure Mail component,但我相信类似的任务也可以很容易地与其他供应商的组件一起复制。
代码基于Mail Message tutorial。
// create an instance of MailMessage
MailMessage message = new MailMessage();
// load the message from a local disk file
message.Load("c:\\message.eml");
// send message
Smtp.Send(message, "smtp.example.org");