メールから XML 添付ファイルを取得し、さらに処理するためにディスクに保存する C# プログラムを作成しています。
if (message.Attachments != null && message.Attachments.Any())
{
foreach (var attachment in message.Attachments)
{
attachment.Download();
var fileName = String.Format("{0}-{2}{1}", Path.GetFileNameWithoutExtension(attachment.FileName), Path.GetExtension(attachment.FileName), Guid.NewGuid());
attachment.Save(attachmentsPath, fileName);
string contents = File.ReadAllText(attachmentsPath + "\\" + fileName);
MessageBox.Show(String.Format("Attachment saved: {0}", fileName));
}
}
一部の XML は、末尾が SUB 文字 (ASCII 26) であるため無効であり、C# はこの時点でエラーをポップします。
attachment.Save(attachmentsPath, fileName);
タイプ 'System.FormatException' の未処理の例外が mscorlib.dll で発生しました入力は有効な Base-64 文字列ではありません。これは、base 64 以外の文字、3 つ以上の埋め込み文字、または埋め込み文字に無効な文字が含まれているためです。
XML をディスクに保存する前に、この文字から XML の添付ファイルを削除したり、この特殊文字を無視したりするにはどうすればよいですか?