poptest.cpp
上传用户:liuzhunlcd
上传日期:2007-01-12
资源大小:54k
文件大小:3k
源码类别:

Email客户端

开发平台:

Visual C++

  1. // poptest.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include <iostream.h>
  5. #include <tchar.h>
  6. #include <comdef.h>
  7. #include <atlconv.h>
  8. #include "poptest.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. #import"..pophandlerDebugpophandler.dll" no_namespace named_guids
  15. /////////////////////////////////////////////////////////////////////////////
  16. // The one and only application object
  17. CWinApp theApp;
  18. using namespace std;
  19. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  20. {
  21. // initialize MFC and print and error on failure
  22. if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
  23. return 1;
  24. if( FAILED(CoInitialize(0)) )
  25. {
  26. std::cout << "failed CoInitialize()" << endl;
  27. return 1;
  28. }
  29. IPOPLevelPtr pPOPLevel;
  30. LONG lErr = 0;
  31. HRESULT hr = pPOPLevel.CreateInstance(__uuidof(POPLevel));
  32. if(FAILED(hr))
  33. {
  34. std::cout << "failed CreateInstance(), please try to register pophandler.dll" << endl;
  35. CoUninitialize();
  36. return 1;
  37. }
  38. bstr_t bstHost;
  39. bstHost = "127.0.0.1";
  40. CHAR szHost[256];
  41. std::cout << "host: " << endl;
  42. std::cin >> szHost;
  43. bstHost = szHost;
  44. pPOPLevel->put_Host(bstHost);
  45. pPOPLevel->put_Port(110);
  46. bstr_t bstUser;
  47. bstUser = "test_user";
  48. CHAR szUser[256];
  49. std::cout << "user: " << endl;
  50. std::cin >> szUser;
  51. bstUser = szUser;
  52. pPOPLevel->put_User(bstUser);
  53. bstr_t bstPassword;
  54. bstPassword = "1111";
  55. CHAR szPassword[256];
  56. std::cout << "password: " << endl;
  57. std::cin >> szPassword;
  58. bstPassword = szPassword;
  59. pPOPLevel->put_Password(bstPassword);
  60. if(pPOPLevel->Connect() != 0)
  61. {
  62. std::cout << "connect failed" << endl;
  63. pPOPLevel->Disconnect();
  64. pPOPLevel.Release();
  65. CoUninitialize();
  66. return 1;
  67. }
  68. LONG lMailCount;
  69. pPOPLevel->GetMailCount(&lMailCount);
  70. std::cout << "mail count: " << lMailCount << endl;
  71. DWORD i;
  72. for(i = 1; i <= lMailCount; i ++)
  73. {
  74. std::cout << "message: " << i << endl;
  75. if(pPOPLevel->GetMail(i, 1) != 0)
  76. {
  77. std::cout << "receive failed" << endl;
  78. continue;
  79. }
  80. BSTR bsFrom;
  81. BSTR bsTo;
  82. BSTR bsCC;
  83. BSTR bsSubject;
  84. BSTR bsHeader;
  85. BSTR bsDate;
  86. USES_CONVERSION;
  87. pPOPLevel->get_From(&bsFrom);
  88. CHAR* pszString = OLE2T(bsFrom); 
  89. SysFreeString(bsFrom);
  90. std::cout << "from: " << pszString << endl;
  91. pPOPLevel->get_To(&bsTo);
  92. pszString = OLE2T(bsTo);
  93. SysFreeString(bsTo);
  94. std::cout << "to: " << pszString << endl;
  95. pPOPLevel->get_CC(&bsCC);
  96. pszString = OLE2T(bsCC);
  97. std::cout << "cc: " << pszString << endl;
  98. SysFreeString(bsCC);
  99. pPOPLevel->get_Subject(&bsSubject);
  100. pszString = OLE2T(bsSubject);
  101. SysFreeString(bsSubject);
  102. std::cout << "subject: " << pszString << endl;
  103. pPOPLevel->get_Header(&bsHeader);
  104. pszString = OLE2T(bsHeader);
  105. SysFreeString(bsHeader);
  106. pPOPLevel->get_Date(&bsDate);
  107. pszString = OLE2T(bsDate);
  108. SysFreeString(bsDate);
  109. BSTR bsBody;
  110. BSTR bsAttachedFiles;
  111. pPOPLevel->get_Body(&bsBody);
  112. CString sBody = bsBody;
  113. SysFreeString(bsBody);
  114. std::cout << "body: " << (LPCSTR)sBody << endl;
  115. pPOPLevel->get_AttachedFiles(&bsAttachedFiles);
  116. CString sAttachedFiles = bsAttachedFiles;
  117. SysFreeString(bsAttachedFiles);
  118. std::cout << "attached files: " << (LPCSTR)sAttachedFiles << endl;
  119. }
  120. pPOPLevel->Disconnect();
  121. pPOPLevel.Release();
  122. CoUninitialize();
  123. return 0;
  124. }