gpt4 book ai didi

c# - 从内存流添加附件

转载 作者:太空狗 更新时间:2023-10-29 22:58:27 30 4
gpt4 key购买 nike

SendGrid API 文档指定您可以从流中添加附件。 The example it gives uses a FileStream object .

我在 Azure 存储中有一些 Blob,我想将其作为附件通过电子邮件发送。为了实现这一目标,我尝试使用 MemoryStream:

var getBlob = blobContainer.GetBlobReferenceFromServer(fileUploadLink.Name);
if(getBlob != null)
{
// Get file as a stream
MemoryStream memoryStream = new MemoryStream();
getBlob.DownloadToStream(memoryStream);
emailMessage.AddAttachment(memoryStream, fileUploadLink.Name);
}
emailTransport.Deliver(emailMessage);

发送正常,但当电子邮件到达时,附件似乎在那里,但实际上是空的。查看邮件来源,没有附件内容。

使用 SendGrid C# API 发送附件时,使用 MemoryStream 是否是已知限制?或者我应该以其他方式解决这个问题?

最佳答案

您可能只需要在调用 DownloadToStream 后将流位置重置回 0:

var getBlob = blobContainer.GetBlobReferenceFromServer(fileUploadLink.Name);

if (getBlob != null)
{
var memoryStream = new MemoryStream();

getBlob.DownloadToStream(memoryStream);
memoryStream.Seek(0,SeekOrigin.Begin); // Reset stream back to beginning
emailMessage.AddAttachment(memoryStream, fileUploadLink.Name);
}

emailTransport.Deliver(emailMessage);

您可能还想检查谁清理了流,如果他们没有清理流,您应该在调用 Deliver() 后将其丢弃。

关于c# - 从内存流添加附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122352/

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