首页 > 解决方案 > 从邮件中打开时,从流中添加的附件不可读

问题描述

在 blob 中,我生成了可以阅读的 xlsx 报告。我想通过邮件发送这份报告。为此,我正在使用 SendGrid。我将此报告作为来自 blob 的流,创建Attachment并尝试通过邮件发送。结果我收到带有附件的邮件,但我无法阅读。

private async Task SendReportAsync(string fileName)
{
    var reportStream = await blobHelper.GetBlobStreamAsync(fileName).ConfigureAwait(false);
    var message = new Message
    {
        HtmlBody = "Please see file attached", Subject = "Test Report with Attachment", TextBody = "Please see file attached"
    };
    var sender = new MessageAddress
    {
       Address = "noreply@mail.com", Name = "test"
    };

    var attachment = new Attachment(reportStream, fileName);

    await myMessageService.SendAsync(message, sender, new MessageAddress { Address = "mail.receiver@mail.com" }, new[] { attachment });
}

我的消息服务:

public async Task SendAsync(
        Message message,
        MessageAddress sender,
        MessageAddress recipient,
        NameValueCollection headers = null,
        MessageAddress bccRecipient = null,
        IEnumerable<Attachment> attachments = null)
{
    var mailMsg = this.PrepareMailMessage(
            message,
            sender,
            recipient,
            headers,
            bccRecipient,
            out SmtpClient smtpClient,
            attachments);

    await smtpClient.SendMailAsync(mailMsg).ConfigureAwait(false);
}

private MailMessage PrepareMailMessage(
        IMessage message,
        IMessageAddress sender,
        IMessageAddress recipient,
        NameValueCollection headers,
        IMessageAddress bccRecipient,
        out SmtpClient smtpClient,
        IEnumerable<Attachment> attachments = null)
{
    var mailMsg = new MailMessage();

    // Assigning all available values to mailMsg

    return mailMsg;
}

标签: c#.netstreamsendgridmailing

解决方案


推荐阅读