如何获取嵌入在电子邮件中的zipfile链接以供下载?

How can you get a zipfile link embedded in an email to download?

提问人:Michael K 提问时间:9/23/2023 更新时间:9/23/2023 访问量:22

问:

以下代码创建一个链接,其中包含 Blob 存储容器中的 zip 文件:

        public string GetPublicUrl(string containerName, string blobName, DateTime expiry, BlobSasPermissions permissions = BlobSasPermissions.Read, string fileName = null, bool isAttachment = false)
        {
            var containerClient = GetContainerClient(containerName);
            var blobClient = containerClient.GetBlobClient(blobName);
            if (!blobClient.CanGenerateSasUri) return null;
            var sas = blobClient!.GenerateSasUri
            (
                new BlobSasBuilder(BlobSasPermissions.Read, expiry)
                {
                    ContentDisposition = !string.IsNullOrEmpty(fileName) ? $"{(isAttachment ? "attachment; " : "")}filename={HttpUtility.UrlEncode(fileName)}; filename*=UTF-8''{Uri.EscapeDataString(fileName)}" : null,
                    CacheControl = "no-cache"
                }
            );
            return sas.ToString();
        }

然后,我继续将此链接嵌入到我通过 Sendgrid 发送的电子邮件中。

我遇到的问题是创建的链接无法在所有机器上打开和下载文件,尤其是 mac 计算机。将打开一个新选项卡,但随后立即关闭,而不下载文件。

当我复制链接并将其直接粘贴到新选项卡中时,zip 文件将下载。

有人有什么建议吗?

C# 电子邮件 Razor SendGrid

评论


答:

0赞 Michael K 9/23/2023 #1

经过一番努力,在电子邮件中添加标签奏效了。所以现在链接看起来像这样:clicktracking=off<a>

<a href="@Model.Url" clicktracking=off>Files</a>

我不确定为什么这有效,但是嘿!