5

データベースのデータからエクセルファイルを生成するアプリケーションを作成しました。ファイルが生成されると、問題の顧客に自動的に送信されます。私の問題は、公開されたアプリケーションを実行すると正常に動作することです。しかし、一部のユーザーがアプリケーションを実行すると、ファイルは HDD に保存されているため完全に生成され、私はそれらを見ることができます。しかし、それらが MailMessage オブジェクトに添付されると、破損します。これは、破損したファイルのイメージです。これらのファイルは Excel ファイルである必要があります。

ここに画像の説明を入力

これは、ファイルが添付されたメールを送信するための私のコードです。

public void SendMailedFilesDK()
        {
            string[] sentFiles = Directory.GetFiles(sentFilesDK);
            if (sentFiles.Count() > 0)
            {
                using (System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("ares"))
                {
                    using (System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage())
                    {
                        msg.From = new MailAddress("system@mail.dk");
                        msg.To.Add(new MailAddress("operation@mail.dk"));
                        msg.To.Add(new MailAddress("bl@mail.dk"));
                        msg.CC.Add("lmy@mail.dk");
                        msg.CC.Add("ltr@mail.dk");
                        msg.Subject = "IBM PUDO";
                        msg.Body = sentFiles.Count() + " attached file(s) has been sent to the customer(s) in question ";
                        msg.IsBodyHtml = true;
                        foreach (string file in sentFiles)
                        {
                            Attachment attachment = new Attachment(file);
                            msg.Attachments.Add(attachment);
                        }

                        client.Send(msg);
                    }
                }
            }
        }

他のユーザーがアプリケーションを実行すると、ファイルが破損するのはなぜですか? 全員office2010を使用しています。

4

3 に答える 3

1

添付ファイルのコンテンツタイプを適切な値に設定してください。

application/vnd.openxmlformats-officedocument.spreadsheetml.sheetxlsxファイルの場合、または

application/vnd.ms-excelxlsファイルの場合。

たとえば、ループは次のようになります。

ContentType xlsxContent = new ContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
foreach (string file in sentFiles)
{
    Attachment attachment = new Attachment(file, xlsxContent);
    msg.Attachments.Add(attachment);
}
于 2013-03-21T20:23:29.023 に答える
1

これを Attachment コンストラクターで使用しますが、Excel と PDF の添付に問題はありません。

添付データ = new Attachment(sFileName, MediaTypeNames.Application.Octet);

また、これを実行しているユーザーがsentFilesDKで指定された場所にあるファイルにアクセスする権限を持っていることも確認してください。

于 2013-03-21T20:29:56.863 に答える
0

Attachment クラスのコンストラクターの一部である mimetype を指定したい場合があります。

public Attachment(string fileName, ContentType contentType);

ファイルを memorystream で読み取り、次のコンストラクターの一部として渡すこともできます。

public Attachment(Stream contentStream, string name, string mediaType);

于 2013-03-21T20:19:14.953 に答える