-2
using (MemoryStream stream = new MemoryStream())
            {
                compositeLink.PrintingSystem.ExportToPdf(stream);
                Response.Clear();
                Response.Buffer = false;
                Response.AppendHeader("Content-Type", "application/pdf");
                Response.AppendHeader("Content-Transfer-Encoding", "binary");
                Response.AppendHeader("Content-Disposition", "attachment; filename=test.pdf");
                Response.BinaryWrite(stream.GetBuffer());
                Response.End();


            }

これでうまくいきました。次のステップは、この pdf ファイルをメールに添付して送信することです。

using (MemoryStream stream = new MemoryStream())
            {
                compositeLink.PrintingSystem.ExportToPdf(stream);
                Response.Clear();
                Response.Buffer = false;
                Response.AppendHeader("Content-Type", "application/pdf");
                Response.AppendHeader("Content-Transfer-Encoding", "binary");
                Response.AppendHeader("Content-Disposition", "attachment; filename=test.pdf");
                Response.BinaryWrite(stream.GetBuffer());




                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                message.To.Add("someone@example.net");
                message.Subject = "Subject";
                message.From = new System.Net.Mail.MailAddress("someoneelse@example.net");
                message.Body = "Body";
                message.Attachments.Add(Response.BinaryWrite(stream.GetBuffer()));
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("192.168.100.100");
                smtp.Send(message);

                Response.End();

        }

この行に問題があります:

message.Attachments.Add(Response.BinaryWrite(stream.GetBuffer()));

これを機能させる方法はありますか?ありがとう

4

3 に答える 3

3

このようなことを試してください。

message.Attachments.Add(New Attachment(stream, "test.pdf", "application/pdf"))
于 2012-07-03T15:14:43.850 に答える
3

Response.BinaryWrite は、ストリームの内容を受け取り、それらを応答に書き込みます。あなたはそれを望んでいません。

代わりに、新しいAttachmentオブジェクトを作成し、それを message.Attachments に追加する必要があります。

これを試して:

var ct = new ContentType();
ct.MediaType = MediaTypeNames.Application.Pdf;
ct.Name = "test.pdf";
message.Attachments.Add(new Attachment(stream, ct));

より多くのサンプル コードはこちらにあります

于 2012-07-03T15:11:43.243 に答える
0

Response.BinaryWriteメソッドは戻ります。これは、メソッドvoidに何も渡していないことを意味しますAdd

ストリームを直接使用してAttachmentインスタンスを作成し、それをメッセージのコレクションに追加することを検討する必要があります。それは次のようになります。

message.Attachments.Add(new Attachment(stream, "file.pdf"));

添付ファイル付きのメールを送信する完全な例は、MSDN のこちらにあります。それが役立つことを願っています。

于 2012-07-03T15:12:53.313 に答える