【问题标题】:C# Creating and Sending Zip files with gmailC# 使用 gmail 创建和发送 Zip 文件
【发布时间】:2013-07-07 02:49:49
【问题描述】:

我正在尝试使用 C# 压缩和发送 .csv 文件。 我创建文件、压缩它们并使用 SMTP Gmail 主机发送它们。

有时这封电子邮件可能需要几个小时才能到达目的地。 为了测试,我使用非常小的文件,所以大小不是问题。

如果我尝试使用 gmail “手动”发送这些 zip,我会收到以下错误: “myFile.csv.zip 包含一个可执行文件。出于安全原因,Gmail 不允许您发送此类文件。”

我认为我的压缩方法可能存在问题,但它非常简单:

string compressedFile = fileName + ".zip";

FileInfo fi = new FileInfo(fileName);
using (FileStream inFile = fi.OpenRead())
{
    using (FileStream outFile = File.Create(compressedFile))
    {
        using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
        {
            inFile.CopyTo(Compress);
            Compress.Close();
        }
        outFile.Dispose();
    }
}
return compressedFile;

请注意: 如果我采用相同的文件并手动 Zip 或 rar 它,我没有问题。文本文件也会发生这种情况。

【问题讨论】:

  • 您是否尝试过使用DeflateStream 或为您的档案添加“.gz”文件扩展名?也许 Gmail 对“匹配”扩展名和压缩格式非常严格。
  • 如果其他程序应该能够打开它,实际上使用DeflateStream 可能不是一个好主意。我自己从未使用过它,但经过一番阅读后,它似乎实际上并没有生成默认的 zip 文件。你在 .NET 4.5 上吗?那么你应该使用ZipFileZipArchive
  • @cremor 提供 .gz 扩展名解决了问题 :) 如果您将此作为您的答案,我会接受。

标签: c# email compression zip rar


【解决方案1】:

引用自MSDN

写入扩展名为 .gz 的文件的压缩 GZipStream 对象可以使用许多常用压缩工具进行解压缩

GZip 文件并不是真正的“zip”文件。他们通常使用“gz”作为文件扩展名。您可以尝试一下,也许 Gmail 对“匹配”扩展名和压缩格式非常严格。

如果您使用的是 .NET 4.5,您也可以使用 ZipArchive 类。那一个实际上处理“zip”文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2021-09-10
    • 2019-04-02
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多