我有一个Azure Timer Trigger功能,它生成一个excel文件,我需要通过电子邮件发送它作为附件。 我已成功完成以下任务 -
- 创建文件并将其上传到azure blob
- 发送没有附件的电子邮件(使用SmtpClient和MailMessage)
醇>
如何从Azure Blob获取文件并将其作为附件发送?
P.S。 当我将文件存储在Azure的本地存储功能中时,我能够将其作为附件发送。但是,我想将文件的存储移动到Azure Blob
答案 0 :(得分:1)
如何从Azure Blob获取文件并将其作为附件发送?
根据我的理解,您可以将blob下载到函数中的临时本地文件中,如下所示:
// Save blob contents to a file.
using (var fileStream = System.IO.File.OpenWrite(@"path\myfile"))
{
blockBlob.DownloadToStream(fileStream);
}
然后,您可以按如下方式构建Attachment
:
System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment("{file-path}");
或者您可以直接将blob下载到MemoryStream
中,如下所示:
using (var memoryStream = new MemoryStream())
{
blockBlob2.DownloadToStream(memoryStream);
memoryStream.Position = 0;
System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(memoryStream , "{contentType}");
}
您可以关注Download blobs的详细信息。
答案 1 :(得分:0)
var blob_Archive = Environment.GetEnvironmentVariable("blobName", EnvironmentVariableTarget.Process);
var archiveSheetFile = $"{blob_Archive}/FileName-{DateTime.UtcNow:ddMMyyyy_hh.mm}.csv";
using (var txReader = await binder.BindAsync<TextReader>(
new BlobAttribute(file2read, FileAccess.Read)))
{
if(txReader != null)
sBlobNotification = await txReader.ReadToEndAsync();
}
log.LogInformation($"{sBlobNotification}");
您可以在计时器触发功能中编写以上代码,并获取blob内容。 这有帮助吗!