|
|
| 用ASP.Net发送MailList(2) |
| 作者:不详 来源:不详 发布时间:2006-8-14 9:01:35 发布人:chinazhan |
减小字体
增大字体
好了,这个过程就是一个完整的SMTP的过程,下面我们就来看看 豆腐 用 C# 做的这个发送Mail的工具 <%@ Assembly Name="System.net" %> <%@ Import Namespace="System.Net" %> <% @Import Namespace="System.Net.Sockets" %> <%@ Import Namespace="System.IO" %> <script language="C#" runat=server> protected void SendMailClick(Object Src, EventArgs E){ String smtpserver=txtSmtpserver.Text; file://smtp服务器的IP地址 TCPClient tcpc = new TCPClient(); if (0 == tcpc.Connect(smtpserver, txtPort.Text.ToInt16())) { file://连接smtp 服务器成功 Stream s; StreamReader sr ; String strCmd; Byte[] arrCmd; String strRet; String[] arrRet; sr = new StreamReader(tcpc.GetStream(), Encoding.Default); strRet=sr.ReadLine() + "<br>"; file://mail server 的欢迎语 file://服务器连接成功以后,首先向服务器发送HeLo命令 strCmd="HELO www.ASP888.net"; strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>"; file://然后向服务器发送信件的成员的信箱 strCmd="mail from:"+ sender.Text; strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>"; file://向服务器发送收件人的信箱 strCmd="rcpt to:" + receive.Text; strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>"; file://所有的准备工作都已经作好了,下面开始进行邮件的部分 strCmd="data"; strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>"; file://邮件内容 strCmd="Date: 1234567\r\n"; strCmd=strCmd+"From:" + sender.Text +"\r\n"; strCmd=strCmd+"To:" + receive.Text +"\r\n"; strCmd=strCmd+"Subject:" + subject.Text +"\r\n\r\n"; strCmd=strCmd + content.Text +"\r\n\r\n"; strRet=strRet + SenSmtpCmd1(tcpc,strCmd) + "<br>"; strCmd="\r\n.\r\n"; strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>"; /*strCmd=strCmd+"From:xuexh@haitai.com.cm\r\n"; strCmd=strCmd+"To:xuexh@haitai.com.cn\r\n"; strCmd=strCmd+"subject:这是一个测试的邮件\r\n"; strCmd=strCmd+"\r\n"; strCmd=strCmd+"这些是测试邮件的邮件内容\r\n"; strCmd=strCmd+"\r\n.\r\n"; *///strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>"; file://最后 关闭与smtp 服务器的连接 tcpc.Close(); showmsg.Text=strRet; } else { showmsg.Text="对不起,连接服务器失败"; } } String SenSmtpCmd(TCPClient tcpc,String strCmd){ file://为了程序的简单可读,特意写了这个函数 Byte[] arrCmd; String strRet; StreamReader sr; Stream s; s=tcpc.GetStream(); strCmd = strCmd + "\r\n"; arrCmd= Encoding.Default.GetBytes(strCmd.ToCharArray()); s=tcpc.GetStream(); s.Write(arrCmd, 0, strCmd.Length); sr = new StreamReader(tcpc.GetStream(), Encoding.Default); strRet=sr.ReadLine(); return strRet; } String SenSmtpCmd1(TCPClient tcpc,String strCmd){ file://为了程序的简单可读,特意写了这个函数 Byte[] arrCmd; String strRet; StreamReader sr; Stream s; s=tcpc.GetStream(); strCmd = strCmd; arrCmd= Encoding.Default.GetBytes(strCmd.ToCharArray()); s=tcpc.GetStream(); s.Write(arrCmd, 0, strCmd.Length); return ""; } </script> <form id=testForm runat=server> <asp:label id=showmsg runat=server /><br> SMTP服务器:<asp:TextBox id=txtSmtpserver runat=server /><asp:TextBox id=txtPort Text=25 runat=server /><br> 发信人:<asp:TextBox id=sender runat=server /> <br> 收信人:<asp:TextBox id=receive runat=server /> <br> 信件主题:<asp:TextBox id=subject runat=server /> <br> 信件内容:<asp:TextBox id=content runat=server TextMode=MultiLine rows=10/> <asp:Button Text="发送" id=SendMail onClick=SendMailClick runat=server /> </form> 大家可能在看这段程序的时候已经发现了这样的两个函数SenSmtpCmd和SenSmtpCmd1,这两个函数的作用是SenSmtpCmd1不接收smtp server 传递回来的回应,主要是目前的这个版本的ASP.NET 在处理中文的时候还是存在一定的Bug,所以就只有采取这样的变通的办法了。 做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。
|
| |
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|