无法从浏览器下载 .eml 文件

Posted

技术标签:

【中文标题】无法从浏览器下载 .eml 文件【英文标题】:Cannot download .eml file from browser 【发布时间】:2021-10-20 03:52:32 【问题描述】:

我有一个 html 文件,它使用 javascript 创建一个 eml 文件并在单击按钮时下载它。如果我尝试下载而不做任何更改,它会显示message.eml has been blocked because this type of file can harm your system

现在,如果我修改注册表中的Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\ExemptDomainFileTypePairsFromFileTypeDownloadWarnings 路径并将"file_extension":"eml","domain":"domain.com" 添加到其中,我可以下载并打开这个.eml 文件。但是我意识到重启后权限消失了,所以必须重新设置。我也找到了解决方案。这是为了让我的用户帐户成为密钥的所有者并给予完全控制,同时保持对该密钥的系统和其他用户的只读访问权限。然而它并不成功。但无论如何,我不想在注册表中进行更改。

有没有一种方法可以在不更改预设设置的情况下从浏览器下载 .eml 文件?

下载eml文件的代码为:

    <a download="message.eml" id="downloadlink" style="display: none" ><button class="btn btn-primary">Download</button></a>
        <script>
        (function () 
        var textFile = null,
          makeTextFile = function (text) 
            var data = new Blob([text], type: 'text/plain');
            if (textFile !== null) 
              window.URL.revokeObjectURL(textFile);
            
            textFile = window.URL.createObjectURL(data);
            return textFile;
          ;

          var create = document.getElementById('create'),
            textbox = document.getElementById('textbox');
            if(create)
          create.addEventListener('click', function () 
            var link = document.getElementById('downloadlink');

            link.href = makeTextFile(textbox.value);
            link.style.display = 'inline';
          , false);
          
          else
            print('no create')
          
        )();
        

    </script>

【问题讨论】:

您好,请问您是否有机会查看我的回答?如果有什么我可以帮助的,请告诉我。 嗨@YuZhou,很抱歉回复晚了。感谢您富有洞察力的回答。但是,我无权对系统进行任何永久性更改。但是,我后来意识到,我仍然可以将 .eml 文件保留在系统中,并通过右键单击显示 message.eml has been blocked because this type of file can harm your system 的弹出窗口在 Outlook 中打开它。 是的,即使弹出窗口,您仍然可以手动点击下载文件。 【参考方案1】:

我知道你的感受,但恐怕你不能在不更改组策略或注册表的情况下从 Edge 下载 .eml 文件。

这是 Chromium 浏览器的一项功能,旨在保护用户免受有害下载文件的侵害。铬中有一个file types policies,Edge 继承了它。从列表中可以看到.eml文件的危险等级为ALLOW_ON_USER_GESTURE。这意味着此类文件具有潜在危险,但如果用户熟悉下载站点并且下载是故意的,则可能无害。有关详细信息,您可以参考 Edge 高级 PM 的this article。

如果您想自动下载此类ALLOW_ON_USER_GESTURE文件,您可以设置this policy/registry。如果不想修改注册表,我觉得只能设置相应的组策略。

【讨论】:

以上是关于无法从浏览器下载 .eml 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Android 上的浏览​​器下载文件

无法在 android 浏览器中使用 php 下载文件

如何打开SVG文件?

无法使用python从URL下载文件

微信无法下载文件如何做提示跳转到浏览器

为啥 iPhone/iPad 上的浏览​​器无法下载/预览 docx 文件?