gpt4 book ai didi

c# - MemoryStream 不填充附件

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:26 24 4
gpt4 key购买 nike

我正在为 C# 开发一种方法,将字节 [] 作为附件发送。以下方法可以正常发送电子邮件,但附件始终为空。

 public bool envio(MailMessage mail, SmtpClient cliente, byte[] origen)
{
bool res = true;
System.IO.MemoryStream ms;
System.IO.StreamWriter writer;

ms = new System.IO.MemoryStream();
writer = new System.IO.StreamWriter(ms);

try
{
writer.Write(origen);
writer.Flush();

System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Plain);
System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(ms, ct);
attach.Name = "Mensaje";
mail.Attachments.Add(attach);

cliente.Send(mail);

}

catch (Exception ex)
{

res = false;
}

finally

{
writer.Close();
writer.Dispose();
ms.Close();
ms.Dispose();
}
return res;

}

我很确定这对于专业开发人员来说应该是显而易见的。但我找不到解决方案。

提前致谢。

最佳答案

当你完成写入流时,它的位置是在数据的末尾。所以当有人试图从流中读取时,就没有什么可读的了。解决方案很简单:

writer.Write(origen);
writer.Flush();
ms.Position = 0;

此外,由于您在此处处理的是纯文本,因此请注意编码。尽可能使用显式编码以尽量减少编码问题 :)

关于c# - MemoryStream 不填充附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35915403/

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