2011-10-30 36 views
0

送信しているSMTPメッセージにXElementを添付しようとしています。XElementをC#の添付ファイルとしてSMTPメッセージに添付する方法

私のコードは次のようになります。

XElement xmlMsg = new XElement("Test",new XElement("TestSon", "DummyValue"),new XElement("TestSon2","DummyValue")); 
using (MemoryStream memoryStream = new MemoryStream()) 
    { 
     byte[] contentAsBytes = Encoding.Default.GetBytes(xmlMsg.ToString()); 
     memoryStream.Write(contentAsBytes, 0, contentAsBytes.Length); 
     // Set the position to the beginning of the stream. 

     memoryStream.Seek(0, SeekOrigin.Begin); 

     // Create attachment 

     ContentType contentType = new ContentType(); 
     contentType.MediaType = MediaTypeNames.Text.Plain; 
     contentType.Name = "Conversation.xml"; 
     Attachment attachment = new Attachment(memoryStream, contentType); 
     mail.Attachments.Add(attachment); 
     Server.Send(mail); 
    } 

しかし、私の電子メールは、最後の2つの文字なしで、最後にクリップされたXMLファイルを受信した...

私はここで何かが足りないのですか?

答えて

0

何エンコーディング

おかげで、あなたのシステムにEncoding.Defaultのですか?

UTF-16の場合は、(何らかの理由で)バイト数に含まれていないBOMが2バイトと予想されます。

提案:

  • は、ローカル変数にxmlMsg.ToString()を入れ、デバッガでそれを確認してください。
  • バイトを参照してくださいmemoryStream
  • バイナリファイルとして手動でデコードできるように、エンコードされていない添付ファイルをコピーする可能性のある、生の電子メールメッセージの内容を調べます。

eです。できるだけ自動再解釈(XMLビューアなど)を使用して各ステップをチェックしてください。

関連する問題