gpt4 book ai didi

.net-3.5 - MailAttachment 序列化和反序列化不起作用

转载 作者:行者123 更新时间:2023-12-04 19:52:27 26 4
gpt4 key购买 nike

我正在尝试使用 IXmlSerializable 接口(interface)的实现来序列化 MailMessage 对象。然后使用 Image DataType 将序列化对象存储在数据库(使用 SQL Server CE 3.5)中。除附件集合外,反序列化一切正常。在反序列化时,图像已附加但未在电子邮件中正确显示,文本文件为空。

这是要反序列化的代码(只有附件列表部分)

 // Attachments
XmlNode attachmentsNode = GetConfigSection(xml, "SerializableMailMessage/MailMessage/Attachments");
if (attachmentsNode != null)
{
foreach (XmlNode node in attachmentsNode.ChildNodes)
{
string contentTypeString = string.Empty;
if (node.Attributes["ContentType"] != null)
contentTypeString = node.Attributes["ContentType"].Value;

ContentType contentType = new ContentType(contentTypeString);

MemoryStream stream = new MemoryStream();
byte[] data = Encoding.UTF8.GetBytes(node.InnerText);
stream.Write(data, 0, data.Length);

Attachment attachment = new Attachment(stream, contentType);
this.Email.Attachments.Add(attachment);
}
}

private XmlNode GetConfigSection(XmlDocument xml, string nodePath)
{
return xml.SelectSingleNode(nodePath);
}

这是要序列化的代码

// Attachments
if (this.AttachmentList!=null)
{
writer.WriteStartElement("Attachments");

foreach (Attachment attachment in this.AttachmentList)
{
writer.WriteStartElement("Attachment");

if (!string.IsNullOrEmpty(attachment.Name))
writer.WriteAttributeString("ContentType", attachment.ContentType.ToString());

using (BinaryReader reader = new BinaryReader(attachment.ContentStream))
{
byte[] data = reader.ReadBytes((int)attachment.ContentStream.Length);

writer.WriteBase64(data, 0, data.Length);
}

writer.WriteEndElement();
}

writer.WriteEndElement();
}

我从 CodePlex 上的 GOPI C# 邮件发送库中获得了这段代码 http://gopi.codeplex.com/

即使在问题跟踪器中,这也是一个问题。请告知可能出了什么问题。

编辑 1:对不起大家,我已经发布了我的试用代码。现在显示正确的代码。(在 writer.WriteBase64(data, 0, data.Length) 的序列化代码中);

最佳答案

您在序列化时转换为 Base64,但在反序列化时不这样做

byte[] data = Convert.FromBase64String (node.InnerText);

关于.net-3.5 - MailAttachment 序列化和反序列化不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com