11.3.3 如何构造并发送一封邮件
首先,用户在构造一封邮件时,应该对该邮件的相关信息进行描述。代码如下:
- Data:Tue,04 Feb 2009 21:18:03+0800
- From:lymlrl@163.com
- Reply-to:lymlrl@sina.com.cn //回复邮件地址
- Sender: lymlrl@126.com, wexs@163.com,wen@126.com,wuy@sina.com.cn
- To:lymlrl@126.com,data@yahoo.com.cn,asj@sina.com.cn
- Subject: VC编程(www.cppentry.com)! //邮件主题
- ... //省略部分代码
在上面的信息描述中,主要是描述了邮件构造的日期、发送者、接收者以及邮件主题等。接下来,便可以构造邮件内容了。但是,需要用户注意邮件内容与邮件信息描述之间必须空一行,以区分两者内容。代码如下:
- ... //省略部分邮件描述
-
- 请教几个关于VC编程(www.cppentry.com)的问题?//邮件体
- ...//省略部分邮件数据
然后,邮件构造成功便可以将其发送到目的地址了。请用户参考第7章实例程序,本节不再向用户讲述发送邮件的相关编程(www.cppentry.com)方法了。
在本节实例程序中,用户可以通过单击"QQ邮件"按钮调用第7章实例程序或者是Windows系统的邮件发送程序发送邮件。
如果用户采用第7章的实例程序发送邮件,则需要在"QQ邮件"按钮的消息响应函数中,添加代码调用邮件发送实例程序。代码如下:
- void CQQDlg::OnEmail()
- {
- CString str="邮件收发器.exe"; //定义文件路径
- STARTUPINFO si={sizeof(si)}; //定义结构体变量
- PROCESS_INFORMATION pi;
- CreateProcess(str.GetBuffer(1),NULL,NULL,
NULL,true,NULL,NULL,NULL,&s i,&pi); - //调用进程打开邮件收发器
- }
除了使用上述使用的邮件收发器之外,用户也可以使用Windows系统的邮件发送程序进行邮件服务操作。代码如下:
- void CQQDlg::OnEmail()
- {
- ::ShellExecute(NULL,NULL,"mailto:lymlrl@163.
com",NULL,NULL,SW_SHOW); - }
与前面的方法相比,调用Windows系统的邮件发送程序对邮件进行发送比较简单。但是,用户使用这种方法具有很大的局限性。因为用户在程序中只能指定一个固定的邮件接收者的E-mali地址。当然,为了消除这样的限制,用户也可以通过一个简单的对话框,设置邮件接收者的E-mali地址。
实现由用户设置邮件接收者,必须在实例工程中添加一个对话框,并将该对话框关联一个新类CSet。然后,在窗口类中声明该对话框类的实例对象。代码如下:
- #include "Set.h"
- class CQQDlg : public CDialog
- {
- public:
- CSet set; //定义邮件地址设置对话框对象
- ... //省略部分代码
- }
当窗口对象定义以后,用户可以在QQ邮件按钮的消息响应函数中编程(www.cppentry.com)实现弹出邮件地址设置对话框。代码如下:
- void CQQDlg::OnEmail()
- {
- set.DoModal( );
- }
保存、编译并运行程序,当用户单击"QQ邮件"按钮后,程序会弹出邮件地址设置对话框,如图11.30所示。
|
| 图11.30 邮件地址设置对话框 |
用户在弹出的邮件地址设置对话框中输入邮件接收者的E-mail地址,单击OK按钮。接着程序会调用Windows系统的邮件发送程序,代码如下:
- void CSet::OnOK() //OK按钮消息响应函数
- {
- CString mail,str; //定义字符串变量
- mail+="mailto:"; //连接字符串
- GetDlgItem(IDC_EDIT1)->GetWindowText(str);
//获取用户输入的邮件地址 - if(str.GetLength()==0)//判断输入是否为空
- {
- MessageBox("邮件接收地址不能为空!");//弹出消息框
- }
- else
- {
- mail+=str; //连接邮件地址字符串
- ::ShellExecute(NULL,NULL,mail,NULL,NULL,SW_SHOW);
- //调用邮件发送程序
- ::SendMessage(this->m_hWnd,WM_CLOSE,0,0);
//关闭设置对话框 - }
- }
上面的代码中,用户调用邮件发送程序成功之后,必须发送关闭消息关闭地址设置对话框。否则,程序界面会显得不友好。该程序运行效果请用户参考随书光盘中的实例代码。
在本节中,主要是将本实例与第7章邮件收发器的相关知识结合起来向用户讲解实现邮件发送的功能。具体代码与运行效果请用户参考随书光盘。