VC|基于对话框的应用程序发送可以添加附件的邮件

交互设计

  1 下载并注册JMail组件

  1.1 下载jmail.dll文件放到C:\Windows\System32文件夹中和项目路径下

  下载地址:http://www.onlinedown.net/soft/620751.htm

  1.2 注册jmail.dll组件,win+R→regsvr32 jmail.dll

  2 新建基于对话框的应用程序

  2.1 添加以下控件:

  各控件ID参照下面代码。

  2.2 在stdafx.h文件中引入JMail组件

  #import "jmail.dll"using namespace jmail;2.3 初始化类库

  BOOL JMail::OnInitDialog() {……HRESULT hr=::CoInitialize(NULL);if(!SUCCEEDED(hr))return FALSE;}3 add按钮(添加附件)对应代码:

  void CJMailDlg::OnAdd() {CFileDialog file(true,"file",NULL,OFN_HIDEREADONLY

   OFN_OVERWRITEPROMPT, "所有文件

  *.*

  ",this);if(file.DoModal()==IDOK){CString str;str=file.GetPathName();GetDlgItem(IDC_EDATT)->SetWindowText(str);}}4 s按钮对应代码

  void CJMailDlg::OnBts() {CString strserver;CString strrece;CString strsubject;CString strbody;CString stratt;CString strfrom;GetDlgItem(IDC_EDRECE)->GetWindowText(strrece);GetDlgItem(IDC_EDSUBJECT)->GetWindowText(strsubject);GetDlgItem(IDC_EDBODY)->GetWindowText(strbody);GetDlgItem(IDC_EDATT)->GetWindowText(stratt);GetDlgItem(IDC_SMTP)->GetWindowText(strserver);GetDlgItem(IDC_EDFROM)->GetWindowText(strfrom);if(strfrom.IsEmpty()){AfxMessageBox("请填写发信人地址");return;}if(strrece.IsEmpty()){AfxMessageBox("请填写收信人地址");return;}jmail::IMessagePtr jmsg;jmsg.CreateInstance(__uuidof(jmail::Message));jmsg->AddRecipient((LPCTSTR)strrece,"","");jmsg->Charset = "GB2312"; jmsg->Subject=(LPCTSTR)strsubject;jmsg->Body=(LPCTSTR)strbody;jmsg->From=(LPCTSTR)strfrom;jmsg->MailServerUserName = "name@163.com";jmsg->MailServerPassWord = "password";//发送邮箱密码jmsg->AddCustomAttachment((_bstr_t)stratt,(_bstr_t)"jmail",VARIANT_FALSE);try{//jmsg->S((LPCTSTR)strserver,VARIANT_FALSE);//jmsg->S("smtp.163.com", VARIANT_FALSE);jmsg->S(strserver.GetBuffer(0),VARIANT_FALSE);}catch(_com_error e){CString strerr;strerr.Format("%s\r\n错误描述是%s",(LPCTSTR)e.ErrorMessage(),(LPCTSTR)e.Description());AfxMessageBox(strerr);}//AfxMessageBox("发送成功");//m_status = "sed successfully!";GetDlgItem(IDC_status)->SetWindowText("sed successfully!");}5 也可以初始化各文本框的值

  BOOL CJMailDlg::OnInitDialog(){CDialog::OnInitDialog();……GetDlgItem(IDC_SMTP)->SetWindowText("smtp.163.com");GetDlgItem(IDC_EDFROM)->SetWindowText("name@163.com");GetDlgItem(IDC_EDRECE)->SetWindowText("name@163.com");GetDlgItem(IDC_EDSUBJECT)->SetWindowText("website.rar");GetDlgItem(IDC_EDATT)->SetWindowText("C:\\Users\\username\\Desktop\\website.rar");GetDlgItem(IDC_EDBODY)->SetWindowText("");return TRUE; // return TRUE unless you set the focus to a control}运行后点击“发送”按钮,打开163邮箱:

  _End_

标签: 交互设计