0

aspxページをメールで送りたいです。というわけでpdfに変換。問題は、データが保存される前にPDFが作成されることです。そのため、pdf を開くと、テストボックスが空になります。解決策を見つけてください。以下は、使用しているコードです。また、pdfファイルを添付ファイルとして送信したいと考えています。

     protected void SendMail()
    {

        var userName = "4.n-4@gmail.com";

        var toAddress = YourEmail.Text.ToString();

        const string Password = "Mypassword123#";

        string subject = YourSubject.Text.ToString();
        string body = "From: " + YourName.Text + "\n";
        body += "Email: " + YourEmail.Text + "\n";
        body += "Subject: " + YourSubject.Text + "\n";
        body += "Question: \n" + Comments.Text + "\n";

        var smtp = new System.Net.Mail.SmtpClient();
        {
            smtp.Host = "10.238.52.240";
            smtp.Port = 25;
            smtp.EnableSsl = false;
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.Credentials = new NetworkCredential(userName, Password);
            smtp.Timeout = 20000;
        }

        smtp.Send(userName, toAddress, subject, body);
    }

     protected void Button1_Click(object sender, EventArgs e)
    {

        Response.ContentType = "application/pdf"; 
        Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache); 
        StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); 
        this.Page.RenderControl(hw); 
        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f); 
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
        pdfDoc.Open(); 
        htmlparser.Parse(sr); 

        Response.Write(pdfDoc);


         try
        {
             SendMail();

            DisplayMessage.Text = "Your Comments after sending the mail";
            DisplayMessage.Visible = true;
            YourSubject.Text = "";
            YourEmail.Text = "";
            YourName.Text = "";
            Comments.Text = "";
            pdfDoc.Close();
            Response.End();
        }
        catch (Exception) { }
    }
        }
      }
4

1 に答える 1

0

あなたのコードビハインドの残りの部分はわかりませんが、適切な PostBack 処理が欠けていると思います。送信ボタンをクリックすると、ページが最初に投稿されます (つまり、「PostBack」 -Page_Loadイベントを含むページのライフ サイクル全体が再処理され、ページが再初期化されます)、ボタンの Click イベントに到達するとその後、フォームとテキストボックスは空になります。

msdnで ASP.NET Page Life Cycle を読むことができます。

于 2012-09-13T12:47:20.737 に答える