本文將向你介紹如何編寫一個能發(fā)送簡單的電子郵件的程序。所謂簡單是指本程序只能發(fā)送純文本,并且一次只能發(fā)送給一個收件人。
首先新建一個工程。
將窗體的Name屬性改為"frmSendMail" ,Caption屬性改為"Simple Mail sender", BorderStyle 屬性值設(shè)為"1 - Fixed Single"。
向窗體中添加一個Winsock控件。
將上面的New Message, Send Message ?Close 等命令按鈕的Name屬性分別改為cmdNew, cmdSend ?及cmdClose。
將下面的代碼添加到相應(yīng)的事件中
Private Sub cmdNew_Click()
txtRecipient = ""
txtSubject = ""
txtMessage = ""
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
現(xiàn)在來寫發(fā)送郵件的代碼。
如果你看過本站的上一篇文章“SMTP協(xié)議簡介”的話,你就已經(jīng)知道了我們在這里會用到一些什么樣的命令。這些命令必須嚴(yán)格按照預(yù)先規(guī)定的順序來發(fā)送。為了跟蹤這一順序,我們將用到一個特殊的變量m_State,我們將用它來存儲當(dāng)前的SMTP進(jìn)程的狀態(tài)。
你可以將SMTP進(jìn)程狀態(tài)看作是等待服務(wù)對某一命令反應(yīng)的狀態(tài),也就是說向服務(wù)器發(fā)送了多少個命令就有多少個狀態(tài)。我們無法用VB的數(shù)據(jù)類型來描述進(jìn)程所處的狀態(tài)。因此本程序中用到了一個特殊的數(shù)據(jù)類型"SMTP_State" 。把下面的代碼添加到窗體的聲明段中:
Private Enum SMTP_State
MAIL_CONNECT
MAIL_HELO
MAIL_FROM
MAIL_RCPTTO
MAIL_DATA
MAIL_DOT
MAIL_QUIT
End Enum
Private m_State As SMTP_State
把下面的代碼放在Send Message的Click事件中。
Private Sub cmdSend_Click()
Winsock1.Connect Trim$(txtHost), 25
m_State = MAIL_CONNECT
End Sub
上面的代碼第一行用來同服務(wù)器建立連接,25是SMTP服務(wù)器的默認(rèn)端口號。接下來要做的就是在Winsock的DataArrival事件中編寫代碼處理服務(wù)的回應(yīng)。
首先新建一個工程。
將窗體的Name屬性改為"frmSendMail" ,Caption屬性改為"Simple Mail sender", BorderStyle 屬性值設(shè)為"1 - Fixed Single"。
向窗體中添加一個Winsock控件。
將上面的New Message, Send Message ?Close 等命令按鈕的Name屬性分別改為cmdNew, cmdSend ?及cmdClose。
將下面的代碼添加到相應(yīng)的事件中
Private Sub cmdNew_Click()
txtRecipient = ""
txtSubject = ""
txtMessage = ""
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
現(xiàn)在來寫發(fā)送郵件的代碼。
如果你看過本站的上一篇文章“SMTP協(xié)議簡介”的話,你就已經(jīng)知道了我們在這里會用到一些什么樣的命令。這些命令必須嚴(yán)格按照預(yù)先規(guī)定的順序來發(fā)送。為了跟蹤這一順序,我們將用到一個特殊的變量m_State,我們將用它來存儲當(dāng)前的SMTP進(jìn)程的狀態(tài)。
你可以將SMTP進(jìn)程狀態(tài)看作是等待服務(wù)對某一命令反應(yīng)的狀態(tài),也就是說向服務(wù)器發(fā)送了多少個命令就有多少個狀態(tài)。我們無法用VB的數(shù)據(jù)類型來描述進(jìn)程所處的狀態(tài)。因此本程序中用到了一個特殊的數(shù)據(jù)類型"SMTP_State" 。把下面的代碼添加到窗體的聲明段中:
Private Enum SMTP_State
MAIL_CONNECT
MAIL_HELO
MAIL_FROM
MAIL_RCPTTO
MAIL_DATA
MAIL_DOT
MAIL_QUIT
End Enum
Private m_State As SMTP_State
把下面的代碼放在Send Message的Click事件中。
Private Sub cmdSend_Click()
Winsock1.Connect Trim$(txtHost), 25
m_State = MAIL_CONNECT
End Sub
上面的代碼第一行用來同服務(wù)器建立連接,25是SMTP服務(wù)器的默認(rèn)端口號。接下來要做的就是在Winsock的DataArrival事件中編寫代碼處理服務(wù)的回應(yīng)。