设为首页 加入收藏

TOP

11.3.3 如何构造并发送一封邮件
2013-10-07 13:01:35 来源: 作者: 【 】 浏览:83
Tags:11.3.3 如何 构造 发送 邮件

11.3.3  如何构造并发送一封邮件

首先,用户在构造一封邮件时,应该对该邮件的相关信息进行描述。代码如下:

  1. Data:Tue,04 Feb 2009 21:18:03+0800  
  2. From:lymlrl@163.com  
  3. Reply-to:lymlrl@sina.com.cn         //回复邮件地址  
  4. Sender: lymlrl@126.com, wexs@163.com,wen@126.com,wuy@sina.com.cn  
  5. To:lymlrl@126.com,data@yahoo.com.cn,asj@sina.com.cn  
  6. Subject: VC编程(www.cppentry.com)!  //邮件主题  
  7. ... //省略部分代码 

在上面的信息描述中,主要是描述了邮件构造的日期、发送者、接收者以及邮件主题等。接下来,便可以构造邮件内容了。但是,需要用户注意邮件内容与邮件信息描述之间必须空一行,以区分两者内容。代码如下:

  1. ... //省略部分邮件描述  
  2.  
  3. 请教几个关于VC编程(www.cppentry.com)的问题?//邮件体  
  4.    ...//省略部分邮件数据 

然后,邮件构造成功便可以将其发送到目的地址了。请用户参考第7章实例程序,本节不再向用户讲述发送邮件的相关编程(www.cppentry.com)方法了。

在本节实例程序中,用户可以通过单击"QQ邮件"按钮调用第7章实例程序或者是Windows系统的邮件发送程序发送邮件。

如果用户采用第7章的实例程序发送邮件,则需要在"QQ邮件"按钮的消息响应函数中,添加代码调用邮件发送实例程序。代码如下:

  1. void CQQDlg::OnEmail()  
  2. {  
  3.     CString str="邮件收发器.exe";    //定义文件路径  
  4.     STARTUPINFO si={sizeof(si)};    //定义结构体变量  
  5.     PROCESS_INFORMATION pi;  
  6.     CreateProcess(str.GetBuffer(1),NULL,NULL,
    NULL,true,NULL,NULL,NULL,&s    i,&pi);  
  7.     //调用进程打开邮件收发器  

除了使用上述使用的邮件收发器之外,用户也可以使用Windows系统的邮件发送程序进行邮件服务操作。代码如下:

  1. void CQQDlg::OnEmail()  
  2. {  
  3.   ::ShellExecute(NULL,NULL,"mailto:lymlrl@163.
    com",NULL,NULL,SW_SHOW);  

与前面的方法相比,调用Windows系统的邮件发送程序对邮件进行发送比较简单。但是,用户使用这种方法具有很大的局限性。因为用户在程序中只能指定一个固定的邮件接收者的E-mali地址。当然,为了消除这样的限制,用户也可以通过一个简单的对话框,设置邮件接收者的E-mali地址。

实现由用户设置邮件接收者,必须在实例工程中添加一个对话框,并将该对话框关联一个新类CSet。然后,在窗口类中声明该对话框类的实例对象。代码如下:

  1. #include "Set.h"  
  2. class CQQDlg : public CDialog  
  3. {  
  4. public:  
  5.         CSet set;       //定义邮件地址设置对话框对象  
  6. ...     //省略部分代码  

当窗口对象定义以后,用户可以在QQ邮件按钮的消息响应函数中编程(www.cppentry.com)实现弹出邮件地址设置对话框。代码如下:

  1. void CQQDlg::OnEmail()  
  2. {  
  3. set.DoModal( );  

保存、编译并运行程序,当用户单击"QQ邮件"按钮后,程序会弹出邮件地址设置对话框,如图11.30所示。

 
图11.30  邮件地址设置对话框
用户在弹出的邮件地址设置对话框中输入邮件接收者的E-mail地址,单击OK按钮。接着程序会调用Windows系统的邮件发送程序,代码如下:
  1. void CSet::OnOK()   //OK按钮消息响应函数  
  2. {  
  3. CString mail,str;   //定义字符串变量  
  4. mail+="mailto:";    //连接字符串  
  5. GetDlgItem(IDC_EDIT1)->GetWindowText(str);         
    //获取用户输入的邮件地址  
  6. if(str.GetLength()==0)//判断输入是否为空  
  7. {  
  8.     MessageBox("邮件接收地址不能为空!");//弹出消息框  
  9. }  
  10. else  
  11. {  
  12. mail+=str;          //连接邮件地址字符串  
  13. ::ShellExecute(NULL,NULL,mail,NULL,NULL,SW_SHOW);  
  14.     //调用邮件发送程序  
  15. ::SendMessage(this->m_hWnd,WM_CLOSE,0,0);         
    //关闭设置对话框  
  16. }  

上面的代码中,用户调用邮件发送程序成功之后,必须发送关闭消息关闭地址设置对话框。否则,程序界面会显得不友好。该程序运行效果请用户参考随书光盘中的实例代码。

在本节中,主要是将本实例与第7章邮件收发器的相关知识结合起来向用户讲解实现邮件发送的功能。具体代码与运行效果请用户参考随书光盘。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.3.4 上传文件 下一篇11.2.1 定义通信数据结构

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: