1

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 で取得しても、問題はありません。これは、テキスト ファイルでも発生します。

4

1 に答える 1

1

MSDNからの引用:

拡張子が .gz のファイルに書き込まれた圧縮された GZipStream オブジェクトは、多くの一般的な圧縮ツールを使用して解凍できます。

GZip ファイルは、実際には「zip」ファイルではありません。彼らは通常、ファイル拡張子として「gz」を使用します。おそらく、Gmail は拡張子と圧縮形式の「一致」について非常に厳密です。

.NET 4.5 を使用している場合は、代わりにZipArchiveクラスを使用できます。それは実際に「zip」ファイルを処理します。

于 2013-07-09T14:08:13.547 に答える