0

我正在尝试将 MIME gui 与我需要的代码分开。我几乎只剩下一个我不知道如何替换的 gui 元素。此元素是 openfiledialog。这是一个代码片段。

程序.cs

var sfd = new OpenFileDialog();
sfd.FileName = "C:\\eml\\" + validOutputFilename;

try
{
    var writer = new MimeMessageWriter();
    using (var fs = sfd.OpenFile()) writer.Write(message, fs);
}
catch (Exception ex)
{
    //ignore
    // need to log
}

消息是一个 IMessage。为存储有关 eml 文件的信息而创建的类。打开文件对话框允许您输入带有 eml 扩展名的文件名,仅此而已。write.Write 需要一个 IMessage 和一个流。内部 writer.Write 正在写入文件 文件中唯一使用此代码的部分是文件本身最后写入并写出任何附件时。这是那些代码片段。

*MimeMessageWriter

- 附件在这里使用它

var embeddedMessage = attachment.OpenAsMessage();
var messageWriter = new MimeMessageWriter();
var msgStream = new MemoryStream();
messageWriter.Write(embeddedMessage, msgStream);

var messageAttachment = ew DotNetOpenMail.FileAttachment(msgStream.ToArray());
messageAttachment.ContentType = "message/rfc822";
messageAttachment.FileName = filename + ".eml";

outMessage.AddMixedAttachment(messageAttachment);

- 写出文件的文件部分

using (var sw = new StreamWriter(stream))
sw.Write(outMessage.ToDataString());

我想用允许我传递文件名以在 MimeMessageWriter 中写出文件的东西替换 openFileDialog

4

1 回答 1

0

代替

using (var fs = sfd.OpenFile()) writer.Write(message, fs);

string fileName = @"c:\eml\myAttachment.eml";
using ( FileStream fs = new FileStream( fileName, FileMode.CreateNew ) )
{
   writer.Write( message, fs )
}

另请参阅:http: //msdn.microsoft.com/de-de/library/47ek66wy.aspx

于 2012-11-12T05:11:40.313 回答