0

ReportViewer コントロールから生成された PDF を Outlook 電子メールに添付しようとしています。Office 2013 を持っています。

試してみると、以下が発生します(例外:「申し訳ありませんが、問題が発生しました。もう一度やり直してください。」何かアイデアはありますか?

reportviewer をメールに添付

private void btnEmail_Click(object sender, EventArgs e)
    {
        Warning[] warnings;
        string[] streamids;
        string mimeType;
        string encoding;
        string filenameExtension;

        byte[] bytes = reportViewer1.LocalReport.Render(
            "PDF", null, out mimeType, out encoding, out filenameExtension,
            out streamids, out warnings);

        using (FileStream fs = new FileStream("Confirmation Letter.pdf", FileMode.Create))
        {
            fs.Write(bytes, 0, bytes.Length);
            School school = School.FromID(Convert.ToInt32(booking.School));

            Outlook.Application outlookApp = new Outlook.Application();
            Outlook.MailItem mailItem = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
            mailItem.Subject = SystemData.SystemInformation.GetValue("LetterSubject");
            mailItem.To = school.MainEmail;
            mailItem.Body = SystemData.SystemInformation.GetValue("LetterMessage");
            mailItem.Importance = Outlook.OlImportance.olImportanceLow;

            Attachment att = new Attachment(new MemoryStream(bytes), "Confirmation Letter.pdf");

            mailItem.Attachments.Add(att);
            mailItem.Display(true);
        }
    }
4

2 に答える 2

0



私がoutlook.MailItem.Attatchment.add()関数を研究したとき、2つの引数を受け入れます。1。添付ファイルとして添付するファイルの物理パス。2.添付ファイルとしてすでにファイルを持っているメールアイテムオブジェクト。(つまり、物理ファイルパスがあります。)

したがって、attatchment.add()メソッドの物理ファイルパスを渡す必要があります

したがって、あなたの場合、レンダリングされたストリームをファイルとしてハードディスクに保存してから、このメソッドでファイルの物理パスを渡す必要があります。

例:MailItem.Attachment.add(@ "C:\ temp \ abc.pdf");

参考までに、次のリンクを参照してください

http://msdn.microsoft.com/en-us/library/office/ff869553.aspx

満足している場合は回答をマークしてください。

ハッピーコーディング:)

于 2013-02-06T05:30:57.237 に答える