如何将XElement作为C#中的附件附加到SMTP邮件

时间:2011-10-30 11:28:29

标签: c# xml smtpclient

我正在尝试将XElement附加到我正在发送的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);
    }

但是,我收到的电子邮件是在最后剪切的XML文件,没有最后2个字符......

我在这里错过了什么吗?

由于

1 个答案:

答案 0 :(得分:0)

您系统上的Encoding.Default编码是什么?

如果是UTF-16,我希望这两个字节是一个BOM(由于某种原因)不包含在字节数中。

建议:

  • xmlMsg.ToString()放入局部变量,并在调试器中进行检查。
  • 查看memoryStream
  • 中的字节数
  • 查看原始邮件中的电子邮件内容,可能会复制未编码的附件,以便您可以手动解码为二进制文件。

IE中。使用尽可能少的自动重新解释(例如,由XML查看器)检查每个步骤。