0

必要なコードから MIME GUI を分離しようとしています。交換方法がわからないGUI要素がもう1つあるだけです。この要素は openfiledialog です。ここにコードスニペットがあります。

Program.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());

openFileDialog を、ファイル名を渡して MimeMessageWriter にファイルを書き出せるようにするものに置き換えたい

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 に答える