发送电子邮件的程序实例.doc

上传人:枫** 文档编号:543875741 上传时间:2023-03-28 格式:DOC 页数:28 大小:126.50KB
返回 下载 相关 举报
发送电子邮件的程序实例.doc_第1页
第1页 / 共28页
发送电子邮件的程序实例.doc_第2页
第2页 / 共28页
发送电子邮件的程序实例.doc_第3页
第3页 / 共28页
发送电子邮件的程序实例.doc_第4页
第4页 / 共28页
发送电子邮件的程序实例.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《发送电子邮件的程序实例.doc》由会员分享,可在线阅读,更多相关《发送电子邮件的程序实例.doc(28页珍藏版)》请在金锄头文库上搜索。

1、发送电子邮件的程序一、程序界面设计smtp电子邮件发送程序的用户界面填入smtp服务器地址、邮箱用户名和口令,端口号是25,并填入发信人,发信地址填入你在该网站的免费邮箱地址。在对话框的右面填入发送电子邮件的相关信息,选择一个附件,然后点击“发送”按钮,程序会与服务器建立TCP连接,然后按照ESMTP协议发送ELHO命令,然后发送用户名和口令,经过验证,进入SMTP会话。通过命令交互,将邮件和附件发送出去,然后断开连接。在此过程中,右下方的多文本列表框(RichTextBox)会显示全部的会话信息。现在的SMTP服务器与以前不一样,一般都要经过验证身份后,才为你提供传输邮件的服务,验证的方法有

2、很多种,这里只实现了一种,仅仅为了说明问题。程序实现的技术要点是:1运用Windows的消息驱动机制2通过状态转换来控制会话命令的发布顺序3实现了base64编码和译码。二、创建应用程序的过程1使用MFC AppWizard创建应用程序框架工程名是Smtp,应用程序的类型是基于对话框的,对话框的标题是“电子邮件发送客户端程序”,需要Windows Sockets的支持,其它部分接受系统的默认设置就可以。向导自动为应用程序创建了两个类:应用程序类:CSmtpApp,基类是CWinApp,对应的文件是Smtp.h和Smtp.cpp。对话框类:CSmtpDlg,基类是CDialog,对应的文件是Sm

3、tpDlg.h和SmtpDlg.cpp。2为对话框添加控件在程序的主对话框界面中添加相应的控件对象,并按照下表修改控件的属性。 对话框中的控件属性控件类型控件IDCaption静态文本 static textIDC_STATIC发信人静态文本 static textIDC_STATIC发信地址静态文本 static textIDC_STATICSMTP服务器静态文本 static textIDC_STATIC端口静态文本 static textIDC_STATIC用户名静态文本 static textIDC_STATIC口令编辑框 edit boxIDC_EDIT_SENDER编辑框 edit

4、 boxIDC_EDIT_ADDRESS编辑框 edit boxIDC_EDIT_SERVNAME编辑框 edit boxIDC_EDIT_SERVPORT编辑框 edit boxIDC_EDIT_USERNAME编辑框 edit boxIDC_EDIT_PASSWORD静态文本 static textIDC_STATIC收信静态文本 static textIDC_STATIC主题静态文本 static textIDC_STATIC抄送静态文本 static textIDC_STATIC暗送静态文本 static textIDC_STATIC附件静态文本 static textIDC_STAT

5、IC信件内容编辑框 edit boxIDC_EDIT_RECEIVER编辑框 edit boxIDC_EDIT_TITLE编辑框 edit boxIDC_EDIT_CC编辑框 edit boxIDC_EDIT_BCC编辑框 edit boxIDC_EDIT_ATTACH编辑框 edit boxIDC_EDIT_LETTER命令按钮 buttonIDC_BUTTON_VIEW浏览静态文本 static textIDC_STATICsmtp 会话的状态信息多文本框 RichEdit BoxIDC_RICH_LIST命令按钮 buttonIDOK发送命令按钮 buttonIDCANCEL取消3定义控

6、件的成员变量为对话框中的控件对象定义相应的成员变量。 控件对象的成员变量控件IDControl IDs变量名称Member Variable Name变量类别Category变量类型Variable TypeIDC_EDIT_SENDERm_strSenderValueCStringIDC_EDIT_ADDRESSm_strAddrValueCStringIDC_EDIT_SERVNAMEm_strServNameValueCStringIDC_EDIT_SERVPORTm_nServPortValueUINTIDC_EDIT_USERNAMEm_strUserNameValueCString

7、IDC_EDIT_PASSWORDm_strPasswordValueCStringIDC_EDIT_RECEIVERm_strReceiverValueCStringIDC_EDIT_TITLEm_strTitleValueCStringIDC_EDIT_CCm_strCCValueCStringIDC_EDIT_BCCm_strBCCValueCStringIDC_EDIT_ATTACHm_strAttachValueCStringIDC_EDIT_LETTERm_strLetterValueCStringIDC_RICH_INFOm_strInfoValueCString4为控件对象添加

8、事件响应函数为对话框中的控件对象添加事件响应函数。 控件类型对象标识 ObjectID消息 Message函数Member functions命令按钮IDC_BUTTON_VIEWBN_CLICKEDOnButtonView命令按钮IDOKBN_CLICKEDOnIDOK5Base64编码和解码创建一个普通的类,用来实现base64编码和解码。6创建CMySocket类为了能够捕获并响应socket事件,应创建用户自己的套接字类,可利用类向导添加。Class Type选择MFC Class,类名为CMySocket,基类是CAsyncSocket类,创建后对应的文件是MySocket.h和My

9、Socket.cpp。在利用类向导为CMySocket类添加OnConnect,OnClose和OnReceive三个事件处理函数,并为它添加一般的成员函数和变量。可参看下一小节的程序代码。7手工添加包含语句以及事件函数和成员函数的代码8分阶段编译执行,进行测试三、程序清单1CSmtpApp应用程序类Smtp.hSmtp.cpp/CSmtpApp:InitInstance()添加一句初始化多文本框控件的函数。BOOL CSmtpApp:InitInstance()if (!AfxSocketInit()AfxMessageBox(IDP_SOCKETS_INIT_FAILED);return

10、FALSE;AfxEnableControlContainer(); /MFC自动创建的代码AfxInitRichEdit(); /用户自己添加的.2CSmtpDlg对话框类SmtpDlg.h.#include MySocket.h /自己添加的包含语句#include Base64.h /自己添加的包含语句.class CSmtpDlg : public CDialog/ Constructionpublic:void Display(LONG flag); /显示信息void GetHeader(); /创建电子邮件的头部CMySocket smtpSocket; /套接字类对象CSmtp

11、Dlg(CWnd* pParent = NULL); / standard constructor/类向导自动产生的窗口控件变量的声明/ Dialog Data/AFX_DATA(CSmtpDlg)enum IDD = IDD_SMTP_DIALOG ;CString m_strAddr; /发信地址CString m_strAttach; /附件CString m_strBCC; /暗送CString m_strCC; /抄送CString m_strLetter; /信件内容CString m_strSender; /发信人CString m_strPassword; /口令UINT m_

12、nServPort; /端口CString m_strReceiver; /收信CString m_strServName; / SMTP服务器CString m_strTitle; /主题CString m_strUserName; /用户名CString m_strInfo; /会话状态信息/AFX_DATA./类向导自动生成的消息映射函数声明/AFX_MSG(CSmtpDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_m

13、sg HCURSOR OnQueryDragIcon();afx_msg void OnButtonView(); /点击“浏览”按钮时执行virtual void OnOK(); /点击“发送“按钮时执行/AFX_MSGDECLARE_MESSAGE_MAP()private:CBase64 coder; /进行Base64编码的变量BOOL GetBody(LPSTR& pszBody, int& nBodySize);/构造邮件体;.SmtpDlg.cpp#include stdafx.h#include smtp.h#include smtpDlg.h#include MySocket.h /自己添加的包含语句#include Base64.h /自己添加的包含语句#define SMTP_MAXLINE 76./ CSmtpDlg dialog/CSmtpDlg:CSmtpDlg()CSmtpDlg:CSmtpDlg(CWnd* pParent /*=NULL*/): CD

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档 > 租房合同

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号