- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2019年visualc网络编程案例实战之邮件接收和发送客户端
第8章 邮件接收和发送客户端
邮件接收和发送客户端的作用是在本地计算机和远程计算机之间传送电子信件以及接收电子信件。用户平时所用的Foxmail就是一种邮件接收和发送客户端。通常情况下,Foxmail由发送者将电子信件发送到邮件服务器(SMTP)中,再由SMTP服务器将该邮件发送到POP3(接收邮件)服务器中,邮件接收者通过账户和口令再从POP3服务器中获取信件。在本章中,将向用户介绍邮件接收和发送客户端的原理以及开发过程。
8.1 调用Windows自带的邮件发送程序
一般情况下,用户所使用的Windows操作系统中都带有默认的邮件发送程序。通过该邮件发送程序,用户可以将邮件发送到任何目的地址。这种方法比较简单适用,所以很受大部分用户欢迎。用户可以在操作系统中,使用操作系统命令打开邮件程序。如果用户需要在自己的程序中调用系统自带的邮件程序,那么需要使用函数CreateProcess()或者ShellExecute()进行调用。下面将分别介绍这两种方法。
8.1.1 调用Windows自带程序
在Windows操作系统中,所有的程序都是以进程为单位运行。本节中所讲述的调用邮件发送程序就是通过调用相应的Windows进程实现的。调用该Windows进程所使用的命令是“mailto:+string”,其中,string表示邮件发送的目的地址。例如,用户需要将邮件发送到邮件地址为lymlrl@163.com的邮箱中,使用的命令是“mailto:lymlrl@163.com”。
首先,在Windows系统界面下选择“开始”|“运行”命令,弹出“运行”对话框,如图8.1所示。
图8.1 “运行”对话框
然后,在运行对话框中输入命令“mailto:lymlrl@163.com”,可以打开Windows自带的邮件发送程序进行邮件发送,如图8.2所示。
图8.2 Windows邮件收发器
以上过程是用户通过Windows命令调用邮件收发器必须做的。实际上,除了这种方法,用户还可以在程序中通过函数调用Windows邮件收发器。此种方法将在8.1.2节中进行讲解。
8.1.2 CreateProcess()函数
在VC中编程,MFC类库已经提供了几个库函数用于调用Windows的外部程序,包括邮件收发程序。在本节中,将向用户介绍其中的两个函数CreateProcess()和ShellExecute()。
1.使用CreateProcess()函数
CreateProcess()函数可以创建Windows进程,同时也可以调用已经存在的进程。该函数的原型如下:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
该函数创建进程成功则返回true,否则返回false。其参数意义如下:
参数lpApplicationName表示可执行文件的名字。用户指定该参数后,该函数会在当前路径下搜索可执行文件,但不会按照系统的搜索路径进行搜索。
注意:使用该参数时,需要加上扩展名,因为系统不会自动为其添加“.exe”后缀名。
参数lpCommandLine表示将要传递到新进程的命令行字符串。使用该参数时,该函数会自动为其添加后缀名“.exe”。如果参数字符串没有指定所在路径,那么该函数则会按照系统的搜索路径进行搜索文件。
参数bInheritHandles表示该进程创建的子进程是否能继承父进程的对象句柄。
参数lpStartupInfo指向结构体STARTUPINFO的指针变量。该结构体的声明如下:
typedef struct _STARTUPINFO {
DWORD cb; //表示该结构体的大小
LPTSTR lpReserved; //保留,必须将该参数初始化为NULL
LPTSTR lpDesktop;
LPTSTR lpTitle; //设置控制台程序的名称
DWORD dwX; //设置应用程序窗口的X坐标
文档评论(0)