使用 XMLSerializer 直接流式传输到 MailMessage 附件中
Use XMLSerializer to stream directly into a MailMessage Attachment
我正在使用 XMLSerializer,我需要将其直接写入邮件消息附件,最好不要先将其保存到文件中。
我的代码
var smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587)
{
Credentials = new System.Net.NetworkCredential("email@gmail.com", "password"),
EnableSsl = true
};
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(XmlRoot));
ser.Serialize(ms, model);
var attachment = new System.Net.Mail.Attachment(ms, "file.xml", "application/xml");
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("tothisemail@gmail.com");
message.Subject = String.Format("{0}", some subject name);
message.From = new System.Net.Mail.MailAddress("email@gmail.com");
message.Body = "empty content";
message.Attachments.Add(attachment);
smtp.Send(message);
发生的事情是电子邮件已成功发送,但它写入的 xml 文件完全是空的。
ser.Serialize(ms, model);
ms.Position = 0;
var attachment = new System.Net.Mail.Attachment(ms, "file.xml", "application/xml");
Writing to then reading from a MemoryStream
我正在使用 XMLSerializer,我需要将其直接写入邮件消息附件,最好不要先将其保存到文件中。
我的代码
var smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587)
{
Credentials = new System.Net.NetworkCredential("email@gmail.com", "password"),
EnableSsl = true
};
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(XmlRoot));
ser.Serialize(ms, model);
var attachment = new System.Net.Mail.Attachment(ms, "file.xml", "application/xml");
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("tothisemail@gmail.com");
message.Subject = String.Format("{0}", some subject name);
message.From = new System.Net.Mail.MailAddress("email@gmail.com");
message.Body = "empty content";
message.Attachments.Add(attachment);
smtp.Send(message);
发生的事情是电子邮件已成功发送,但它写入的 xml 文件完全是空的。
ser.Serialize(ms, model);
ms.Position = 0;
var attachment = new System.Net.Mail.Attachment(ms, "file.xml", "application/xml");
Writing to then reading from a MemoryStream