悬赏园豆:100
[已解决问题]
解决于 2010-07-13 16:46
<p style="text-align: left;"> </p>
<p style="text-align: left;">最近我在一个项目:</p>
<p style="text-align: left;">项目中用到asp.net mail类发送外部邮件,但是却发现一个问题就是不能发送大附件(3M以上)发送大附件会出现如下界面</p>
<p style="text-align: left;"> <img src="http://pic002.cnblogs.com/img/liaoxueping/201007/2010071217320679.gif" alt="" /></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">弹出服务器超时</p>
<p style="text-align: left;">我已经在页面设置</p>
<p style="text-align: left;">1.<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true" AsyncPostBackTimeout="36000"</p>
<p style="text-align: left;"> EnableScriptLocalization="false"></p>
<p style="text-align: left;"></asp:ScriptManager></p>
<p style="text-align: left;">2.数据库连接:selectCommand.CommandTimeout = 36000;</p>
<p style="text-align: left;">3.webConfi页面设置:</p>
<p style="text-align: left;"><httpRuntime maxRequestLength="2097150" executionTimeout="36000" /></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">我后台发送email代码如下,附件是从数据库中读取出来,将字节转换成流发送</p>
<p style="text-align: left;">但是附件过大,就出现如上显示,进入调试状态:则出现如下页面</p>
<p style="text-align: left;"> <img src="http://pic002.cnblogs.com/img/liaoxueping/201007/2010071217322569.gif" alt="" /></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">我把后台代码标识出来:</p>
<p style="text-align: left;"> private bool webf_sendmail(ref string ls_err, string ls_j, int tempBillid, ref string arg_msg)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> bool rslt = true;</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if ((txb_sjr.Text.Trim().Trim(';').Trim() != "" || txb_csr.Text.Trim().Trim(';').Trim() != "" || txb_msr.Text.Trim().Trim(';').Trim() != "") && ((ddl_pop_mail.SelectedValue == "-1" ? "" : ddl_pop_mail.SelectedValue.Trim()) != ""))</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> //获取POP邮箱设置信息</p>
<p style="text-align: left;"> string ls_mail_sql = "select pop_longname,pop_longpassword,pop_name,pop_sendserver,pop_sendport from oa_pop_mysetup where pop_billid=" + ddl_pop_mail.SelectedValue.Trim() + "";</p>
<p style="text-align: left;"> DataTable dt_mail = cs_con.Select(ls_mail_sql, null, ref arg_msg).Tables[0];</p>
<p style="text-align: left;"> if (dt_mail.Rows.Count > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (dt_mail.Rows[0]["pop_longname"].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();</p>
<p style="text-align: left;"> string SendTos = txb_sjr.Text.Trim().Trim(';').Trim(); //发送人</p>
<p style="text-align: left;"> string CcTos = txb_csr.Text.Trim().Trim(';').Trim(); //抄送人</p>
<p style="text-align: left;"> string MsTos = txb_msr.Text.Trim().Trim(';').Trim(); //密送人</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //获取POP邮箱设置中发件地址,及发件人姓名</p>
<p style="text-align: left;"> MailAddress from = null;//发件箱地址</p>
<p style="text-align: left;"> string ls_poplongname = dt_mail.Rows[0]["pop_longname"].ToString().Trim();</p>
<p style="text-align: left;"> string ls_poppassword = dt_mail.Rows[0]["pop_longpassword"].ToString().Trim();</p>
<p style="text-align: left;"> ls_poppassword = method.Decrypto(ls_poppassword);</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //发件箱地址密码</p>
<p style="text-align: left;"> string ls_popserver = (@"" + dt_mail.Rows[0]["pop_sendserver"].ToString().Trim()).ToString().Trim();//发送邮件smtp配置</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> if (dt_mail.Rows[0]["pop_name"].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> from = new MailAddress(ls_poplongname, dt_mail.Rows[0]["pop_name"].ToString().Trim());</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> else</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> from = new MailAddress(ls_poplongname, "");</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> message.From = from;//发件人</p>
<p style="text-align: left;"> message.Subject = this.txtTitle.Text.ToString().Trim();//邮件标题</p>
<p style="text-align: left;"> message.Body = ls_j.ToString().Trim(); //邮件内容</p>
<p style="text-align: left;"> message.BodyEncoding = System.Text.Encoding.Default;//内容编码格式</p>
<p style="text-align: left;"> message.IsBodyHtml = true;</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> // 发送附件</p>
<p style="text-align: left;"> string ls_send_mail_sql = "select billid,file_name,add_file,file_size from permit_msg_image where referbillid=" + tempBillid + " and refer_type=0; ";</p>
<p style="text-align: left;"> DataTable dt_mail_file = cs_con_image.Select(ls_send_mail_sql, null, ref arg_msg).Tables[0];</p>
<p style="text-align: left;">//重点</p>
<p style="text-align: left;"> if (dt_mail_file.Rows.Count > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> Stream stream = null;</p>
<p style="text-align: left;"> //将字节转换成流的方式发送附件</p>
<p style="text-align: left;"> <span style="background-color: #ff0000;"> for (int i = 0; i < dt_mail_file.Rows.Count; i++)</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> {</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> Byte[] bytes = (Byte[])(dt_mail_file.Rows[i]["add_file"]);</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> stream = new MemoryStream(bytes);</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> System.Net.Mail.Attachment item = new System.Net.Mail.Attachment(stream, dt_mail_file.Rows[i]["file_name"].ToString().Trim());</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> item.NameEncoding = System.Text.Encoding.UTF8;</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> message.Attachments.Add(item);</span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> </span></p>
<p style="text-align: left;"><span style="background-color: #ff0000;"> }</span></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //收件人</p>
<p style="text-align: left;"> string[] lz_send = System.Text.RegularExpressions.Regex.Split(SendTos, ";"); //总收件人</p>
<p style="text-align: left;"> if (SendTos != "" && lz_send.Length > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> for (int i_send = 0; i_send < lz_send.Length; i_send++)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (lz_send[i_send].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> MailAddress to = new MailAddress(lz_send[i_send].Trim());</p>
<p style="text-align: left;"> message.To.Add(to);</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //抄送人</p>
<p style="text-align: left;"> string[] lz_cc = System.Text.RegularExpressions.Regex.Split(CcTos, ";"); //总收件人</p>
<p style="text-align: left;"> if (CcTos != "" && lz_cc.Length > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> for (int i_cc = 0; i_cc < lz_cc.Length; i_cc++)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (lz_cc[i_cc].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> MailAddress cc = new MailAddress(lz_cc[i_cc].Trim());</p>
<p style="text-align: left;"> message.CC.Add(cc);</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //密送人</p>
<p style="text-align: left;"> string[] lz_ms = System.Text.RegularExpressions.Regex.Split(MsTos, ";"); //总收件人</p>
<p style="text-align: left;"> if (MsTos != "" && lz_ms.Length > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> for (int i_ms = 0; i_ms < lz_ms.Length; i_ms++)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (lz_ms[i_ms].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> MailAddress ms = new MailAddress(lz_ms[i_ms].Trim());</p>
<p style="text-align: left;"> message.Bcc.Add(ms);</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //创建一个SmtpClient 类的新实例,并初始化实例的SMTP 事务的服务器</p>
<p style="text-align: left;"> SmtpClient client = new SmtpClient(ls_popserver);</p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> client.DeliveryMethod = SmtpDeliveryMethod.Network;</p>
<p style="text-align: left;"> client.UseDefaultCredentials = false;</p>
<p style="text-align: left;"> client.EnableSsl = false;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (Exception ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> stream.Close();</p>
<p style="text-align: left;"> stream.Dispose();</p>
<p style="text-align: left;"> arg_msg = "请检查POP设置中发送邮件服务器(SMTP)!";</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> client.Credentials = new System.Net.NetworkCredential(ls_poplongname, ls_poppassword);//检查发件箱地址及密码的正确性</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (Exception ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> stream.Close();</p>
<p style="text-align: left;"> stream.Dispose();</p>
<p style="text-align: left;"> arg_msg = "请检查POP设置中邮箱地址及密码!";</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> // ext_webf_sendmail: ;</p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> client.Send(message);</p>
<p style="text-align: left;"> stream.Close();</p>
<p style="text-align: left;"> stream.Dispose();</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (SmtpException ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> stream.Close();</p>
<p style="text-align: left;"> stream.Dispose();</p>
<p style="text-align: left;"> arg_msg = "发送异常:" + ex.Message.ToString();</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> else</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> //收件人</p>
<p style="text-align: left;"> string[] lz_send = System.Text.RegularExpressions.Regex.Split(SendTos, ";"); //总收件人</p>
<p style="text-align: left;"> if (SendTos != "" && lz_send.Length > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> for (int i_send = 0; i_send < lz_send.Length; i_send++)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (lz_send[i_send].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> MailAddress to = new MailAddress(lz_send[i_send].Trim());</p>
<p style="text-align: left;"> message.To.Add(to);</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //抄送人</p>
<p style="text-align: left;"> string[] lz_cc = System.Text.RegularExpressions.Regex.Split(CcTos, ";"); //总收件人</p>
<p style="text-align: left;"> if (CcTos != "" && lz_cc.Length > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> for (int i_cc = 0; i_cc < lz_cc.Length; i_cc++)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (lz_cc[i_cc].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> MailAddress cc = new MailAddress(lz_cc[i_cc].Trim());</p>
<p style="text-align: left;"> message.CC.Add(cc);</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //密送人</p>
<p style="text-align: left;"> string[] lz_ms = System.Text.RegularExpressions.Regex.Split(MsTos, ";"); //总收件人</p>
<p style="text-align: left;"> if (MsTos != "" && lz_ms.Length > 0)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> for (int i_ms = 0; i_ms < lz_ms.Length; i_ms++)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> if (lz_ms[i_ms].ToString().Trim() != "")</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> MailAddress ms = new MailAddress(lz_ms[i_ms].Trim());</p>
<p style="text-align: left;"> message.Bcc.Add(ms);</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> //创建一个SmtpClient 类的新实例,并初始化实例的SMTP 事务的服务器</p>
<p style="text-align: left;"> SmtpClient client = new SmtpClient(ls_popserver);</p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> client.DeliveryMethod = SmtpDeliveryMethod.Network;</p>
<p style="text-align: left;"> client.UseDefaultCredentials = false;</p>
<p style="text-align: left;"> client.EnableSsl = false;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (Exception ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> arg_msg = "请检查POP设置中发送邮件服务器(SMTP)!";</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> client.Credentials = new System.Net.NetworkCredential(ls_poplongname, ls_poppassword);//检查发件箱地址及密码的正确性</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (Exception ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> arg_msg = "请检查POP设置中邮箱地址及密码!";</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> try</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> client.Send(message);</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (SmtpException ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> arg_msg = "发送异常:" + ex.Message.ToString();</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> else</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> arg_msg = "请检查POP邮箱设置!";</p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> catch (Exception ex)</p>
<p style="text-align: left;"> {</p>
<p style="text-align: left;"> arg_msg = "发送外部邮件异常:" + ex.Message.ToString();</p>
<p style="text-align: left;"> rslt = false;</p>
<p style="text-align: left;"> goto ext_webf_sendmail_end;</p>
<p style="text-align: left;"> }</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> ext_webf_sendmail_end: ;</p>
<p style="text-align: left;"> return rslt;</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> }</p>
问题补充:
而且超时之后,,刚刚一楼说设置SmtpClient.Timeout 之后,也还是没有解决只是比之前迟点点,进入调试之后,还是说操作超时...........,,进入调试还是第二张图片的提示超时,
可以发送大点的附件,但是还是超时哦!
廖雪萍
|
初学一级
|
园豆:
88
提问于:2010-07-12 17:31