.net发送邮件----远程服务器返回错误: (500) 内部服务器错误。

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:53:55
现在在做一个发送邮件的功能。
protected void Page_Load(object sender, EventArgs e)
{
DataList1.DataSource=manager.ApplySelectAllByData();
DataList1.DataBind();
SendEmail();
}
private void SendEmail()
{
string email = Session["email"].ToString();
MailMessage mail = new MailMessage();
mail.From = "oa@expotec.com.cn";//发信人地址
mail.To = email;//收信人地址
mail.Subject = "预登记确认函";//主题
mail.Body = HttpContext("http://localhost:45187/HuiZUI/RegistOkShow.aspx");
//mail.Body = HttpContext("http://cn.yahoo.com/");
mail.Priority = MailPriority.High;
mail.BodyFormat = MailFormat.Html;
mail

RegistOkShow.aspx 就是你正在执行的这个页面吗?
如果是,那就是很明显的死循环了,当然会造成IIS崩溃。
原因很简单,你执行HttpContext方法的时候,它会去读取这个页面的执行结果,而在得到RegistOkShow.aspx的时候,它又会去尝试读取这个页面的结果,如此反复,你就能很快地把自己DDOS了。

要获得当前页面的执行结果,需要用另外的方法。

-----------要善于用搜索引擎解决自己的问题---------------

/// <summary>
/// 重写渲染过程,拦截输出
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
//拦截内容
StringWriter strw = new StringWriter();
HtmlTextWriter w = new HtmlTextWriter(strw);
base.Render(w);
//获得内容
string content = strw.ToString(); //这里的content就是当前页面的执行结果了,然后再发送邮件。
w.Close();
strw.Close();

}