MailDlg.cpp
上传用户:yh_company
上传日期:2013-04-25
资源大小:19k
文件大小:6k
源码类别:

Email客户端

开发平台:

Visual C++

  1. // MailDlg.cpp : Implementierungsdatei
  2. //
  3. // A sample for the new CSMTP, CPOP3 and CMailMessage class
  4. // just a few functions !
  5. // Copyright (c) 1998 Michael Krebs
  6. // The system generated comments are in German - you won't mind, will ya ?
  7. //
  8. #include "stdafx.h"
  9. #include "MailMessage.h"
  10. #include "POP3.h"
  11. #include "SMTP.h"
  12. #include "Mail.h"
  13. #include "MailDlg.h"
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CMailDlg Dialogfeld
  21. CMailDlg::CMailDlg(CWnd* pParent /*=NULL*/)
  22. : CDialog(CMailDlg::IDD, pParent)
  23. {
  24. //{{AFX_DATA_INIT(CMailDlg)
  25. m_Body = _T("abc");
  26. m_From = _T("lihuailu81@163.com");
  27. m_Password = _T("123");
  28. m_POP3 = _T("pop3.sohu.net");
  29. m_SMTP = _T("smtp.sohu.net");
  30. m_To = _T("lihualiu81@sohu.com");
  31. m_User = _T("lihualiu81");
  32. m_Subject = _T("test");
  33. m_MN = 8;
  34. //}}AFX_DATA_INIT
  35. // Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf ben鰐igt
  36. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  37. }
  38. void CMailDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CDialog::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CMailDlg)
  42. DDX_Text(pDX, IDC_BODY, m_Body);
  43. DDX_Text(pDX, IDC_FROM, m_From);
  44. DDX_Text(pDX, IDC_PASSWORD, m_Password);
  45. DDX_Text(pDX, IDC_POP3, m_POP3);
  46. DDX_Text(pDX, IDC_SMTP, m_SMTP);
  47. DDX_Text(pDX, IDC_TO, m_To);
  48. DDX_Text(pDX, IDC_USER, m_User);
  49. DDX_Text(pDX, IDC_SUBJECT, m_Subject);
  50. DDX_Text(pDX, IDC_MSGNO, m_MN);
  51. //}}AFX_DATA_MAP
  52. }
  53. BEGIN_MESSAGE_MAP(CMailDlg, CDialog)
  54. //{{AFX_MSG_MAP(CMailDlg)
  55. ON_WM_PAINT()
  56. ON_WM_QUERYDRAGICON()
  57. ON_BN_CLICKED(IDC_SEND, OnSend)
  58. ON_BN_CLICKED(IDC_STATUS, OnStatus)
  59. ON_BN_CLICKED(IDC_RETR, OnRetr)
  60. ON_BN_CLICKED(IDC_DELE, OnDele)
  61. //}}AFX_MSG_MAP
  62. END_MESSAGE_MAP()
  63. /////////////////////////////////////////////////////////////////////////////
  64. // CMailDlg Nachrichten-Handler
  65. BOOL CMailDlg::OnInitDialog()
  66. {
  67. CDialog::OnInitDialog();
  68. // Symbol f黵 dieses Dialogfeld festlegen. Wird automatisch erledigt
  69. //  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
  70. SetIcon(m_hIcon, TRUE); // Gro遝s Symbol verwenden
  71. SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden
  72. // ZU ERLEDIGEN: Hier zus鋞zliche Initialisierung einf黦en
  73. return TRUE;  // Geben Sie TRUE zur點k, au遝r ein Steuerelement soll den Fokus erhalten
  74. }
  75. // Wollen Sie Ihrem Dialogfeld eine Schaltfl鋍he "Minimieren" hinzuf黦en, ben鰐igen Sie 
  76. //  den nachstehenden Code, um das Symbol zu zeichnen. F黵 MFC-Anwendungen, die das 
  77. //  Dokument/Ansicht-Modell verwenden, wird dies automatisch f黵 Sie erledigt.
  78. void CMailDlg::OnPaint() 
  79. {
  80. if (IsIconic())
  81. {
  82. CPaintDC dc(this); // Ger鋞ekontext f黵 Zeichnen
  83. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  84. // Symbol in Client-Rechteck zentrieren
  85. int cxIcon = GetSystemMetrics(SM_CXICON);
  86. int cyIcon = GetSystemMetrics(SM_CYICON);
  87. CRect rect;
  88. GetClientRect(&rect);
  89. int x = (rect.Width() - cxIcon + 1) / 2;
  90. int y = (rect.Height() - cyIcon + 1) / 2;
  91. // Symbol zeichnen
  92. dc.DrawIcon(x, y, m_hIcon);
  93. }
  94. else
  95. {
  96. CDialog::OnPaint();
  97. }
  98. }
  99. // Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, w鋒rend der Benutzer
  100. //  das zum Symbol verkleinerte Fenster mit der Maus zieht.
  101. HCURSOR CMailDlg::OnQueryDragIcon()
  102. {
  103. return (HCURSOR) m_hIcon;
  104. }
  105. void CMailDlg::OnSend() 
  106. {
  107. UpdateData( TRUE );
  108. CSMTP smtp( m_SMTP );
  109. CMailMessage msg;
  110. msg.m_sFrom = m_From;
  111. msg.AddMultipleRecipients( m_To );
  112. msg.m_sSubject = m_Subject;
  113. msg.m_sBody = m_Body;
  114. if( !smtp.Connect() )
  115. {
  116. AfxMessageBox( smtp.GetLastError() );
  117. return;
  118. }
  119. if( !smtp.SendMessage( &msg ) )
  120. {
  121. AfxMessageBox( smtp.GetLastError() );
  122. return;
  123. }
  124. if( !smtp.Disconnect() )
  125. {
  126. AfxMessageBox( smtp.GetLastError() );
  127. return;
  128. }
  129. AfxMessageBox( _T( "Message Sent Successfully") );
  130. }
  131. void CMailDlg::OnStatus() 
  132. {
  133. // TODO: Code f黵 die Behandlungsroutine der Steuerelement-Benachrichtigung hier einf黦en
  134. UpdateData(TRUE);
  135. CPOP3 pop3( m_POP3 );
  136. pop3.SetUserProperties(m_User,m_Password);
  137. if (!pop3.Connect())
  138. {
  139. AfxMessageBox( pop3.GetLastError() );
  140. return;
  141. }
  142. int num=pop3.GetNumMessages();
  143. if (num<0)
  144. {
  145. AfxMessageBox( pop3.GetLastError() );
  146. return;
  147. }
  148. CString temp;
  149. temp.Format("Anzahl Nachrichten: %d",num);
  150. AfxMessageBox(temp);
  151. if( !pop3.Disconnect() )
  152. {
  153. AfxMessageBox( pop3.GetLastError() );
  154. return;
  155. }
  156. AfxMessageBox( _T( "Successfully disconnected" ) );
  157. }
  158. void CMailDlg::OnRetr() 
  159. {
  160. // TODO: Code f黵 die Behandlungsroutine der Steuerelement-Benachrichtigung hier einf黦en
  161. UpdateData( TRUE );
  162. CPOP3 pop3( m_POP3 );
  163. pop3.SetUserProperties(m_User,m_Password);
  164. if (!pop3.Connect())
  165. {
  166. AfxMessageBox( pop3.GetLastError() );
  167. return;
  168. }
  169. CMailMessage msg;
  170. if (!pop3.GetMessage(m_MN,&msg))
  171. {
  172. AfxMessageBox( pop3.GetLastError() );
  173. return;
  174. }
  175. m_Body=msg.m_sBody;
  176. m_Subject=msg.m_sSubject;
  177. m_From=msg.m_sFrom;
  178. m_To="";
  179. for (int a=0; a<msg.GetNumRecipients(); a++)
  180. {
  181. CString sEmail;
  182. CString sFriendly;
  183. msg.GetRecipient(sEmail,sFriendly,a);
  184. m_To+=sEmail;
  185. m_To+=" ";
  186. }
  187. m_To.TrimRight();
  188. if( !pop3.Disconnect() )
  189. {
  190. AfxMessageBox( pop3.GetLastError() );
  191. return;
  192. }
  193. AfxMessageBox( _T( "Successfully disconnected" ) );
  194. UpdateData(FALSE);
  195. }
  196. void CMailDlg::OnDele() 
  197. {
  198. // TODO: Code f黵 die Behandlungsroutine der Steuerelement-Benachrichtigung hier einf黦en
  199. UpdateData( TRUE );
  200. CPOP3 pop3( m_POP3 );
  201. pop3.SetUserProperties(m_User,m_Password);
  202. if (!pop3.Connect())
  203. {
  204. AfxMessageBox( pop3.GetLastError() );
  205. return;
  206. }
  207. if (!pop3.DeleteMessage(m_MN))
  208. {
  209. AfxMessageBox( pop3.GetLastError() );
  210. return;
  211. }
  212. if( !pop3.Disconnect() )
  213. {
  214. AfxMessageBox( pop3.GetLastError() );
  215. return;
  216. }
  217. AfxMessageBox( _T( "Successfully disconnected" ) );
  218. }