Lav din egen Mail Clientaf Anders Bodeval Carlsen
I denne artikel finder du koden til at lave en mail-klient. Og det vil blive vist hvordan du kan bruge den fra en aspx side. Selvom SmtpMail er så fint understøttet i ASP.net kan der være situationer hvor det er bedre at lave sin egen e-mail klient. SendMail.cs
namespace abc.SendMail {using System; public class SendMail { private String _EmailServer; public String Body { get {return _Body;} set { _Body = value;}} public String EmailServer { get { return _EmailServer; }
set { _EmailServer = value;}} public String SendTo { get { return _SendTo; }
set { _SendTo = value; } public String MailFrom { get { return _MailFrom; }
set { _MailFrom = value;} public String Subject { get { return _Subject; }
set { _Subject = value;}} private void WriteToStream(ref NetworkStream nwstream, string strLine) {string strString2Send = strLine + "\r\n"; Byte[] arr2Send = Encoding.Default.GetBytes(strString2Send.ToCharArray()); nwstream.Write(arr2Send, 0, arr2Send.Length); } private void ReadFromStream(ref NetworkStream nwstream, out string strMessage) {byte[] readBuffer = new byte[255]; int nLength = nwstream.Read(readBuffer, 0, readBuffer.Length); strMessage = Encoding.ASCII.GetString(readBuffer, 0, nLength); } public String Send() String strReturn = ""; NetworkStream nwstream = tcpc.GetStream(); String strResponse; WriteToStream(ref nwstream, "HELO myhost"); ReadFromStream(ref nwstream, out strResponse); strReturn += strResponse + "\n"; WriteToStream(ref nwstream, "MAIL FROM: " + _MailFrom); ReadFromStream(ref nwstream, out strResponse); strReturn += strResponse + "\n"; WriteToStream(ref nwstream, "RCPT TO: " + _SendTo); ReadFromStream(ref nwstream, out strResponse); strReturn += strResponse + "\n"; WriteToStream(ref nwstream, "DATA"); ReadFromStream(ref nwstream, out strResponse); strReturn += strResponse + "\n"; WriteToStream(ref nwstream, "From: " + _MailFrom); WriteToStream(ref nwstream, "Subject: " + _Subject); WriteToStream(ref nwstream, "To: " + _SendTo); WriteToStream(ref nwstream, ""); WriteToStream(ref nwstream, _Body); WriteToStream(ref nwstream, "\r\n."); ReadFromStream(ref nwstream, out strResponse); strReturn += strResponse + "\n"; return strReturn; }
I dette eksempel bruger jeg klassen SendMail i en aspx side, som vist neden for: SendMail.aspx
<%@ Page Language="C#" Debug="true" %> <html><head><title>POP3Client</title></head> <script language="C#" runat="server"> public void Page_Load(Object sender, EventArgs E) { String EmailServer = "smtp.din_mailserver.dk"; SendMail mySender = new SendMail(); mySender.EmailServer = EmailServer; mySender.MailFrom = "afsenders_email"; mySender.SendTo = "modtagers_email"; mySender.Subject = "Det her er bare en test"; mySender.Body = "Kære N.N \n\nDette er en test \n"; String sendResult = mySender.Send(); Response.Write(sendResult); } </script> <body><h1>E-Mail er Sendt!</h1></body> </html> Endeligt skal SendMail.cs compiles hvilket jeg gør ned nedenstående kommando kørt fra en bat-fil compile.bat csc /out:../../bin/SendMail.dll /t:library /r:System.Web.dll /r:System.dll SendMail.cs pause |