MailMessage.cpp
上传用户:hebinsheng
上传日期:2015-04-30
资源大小:25k
文件大小:3k
源码类别:

ICQ弱点检测代码

开发平台:

Visual C++

  1. // MailMessage.cpp: implementation of the CMailMessage class.
  2. // Copyright (c) 1998, Wes Clyburn
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "MailMessage.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. CMailMessage::CMailMessage()
  15. {
  16. }
  17. CMailMessage::~CMailMessage()
  18. {
  19. }
  20. BOOL CMailMessage::AddRecipient( LPCTSTR szEmailAddress, LPCTSTR szFriendlyName)
  21. {
  22. ASSERT( szEmailAddress != NULL );
  23. ASSERT( szFriendlyName != NULL );
  24. CRecipient to;
  25. to.m_sEmailAddress = szEmailAddress;
  26. to.m_sFriendlyName = szFriendlyName;
  27. m_Recipients.Add( to );
  28. return TRUE;
  29. }
  30. // sEmailAddress and sFriendlyName are OUTPUT parameters.
  31. // If the function fails, it will return FALSE, and the OUTPUT
  32. // parameters will not be touched.
  33. BOOL CMailMessage::GetRecipient(CString & sEmailAddress, CString & sFriendlyName, int nIndex)
  34. {
  35. CRecipient to;
  36. if( nIndex < 0 || nIndex > m_Recipients.GetUpperBound() )
  37. return FALSE;
  38. to = m_Recipients[ nIndex ];
  39. sEmailAddress = to.m_sEmailAddress;
  40. sFriendlyName = to.m_sFriendlyName;
  41. return TRUE;
  42. }
  43. int CMailMessage::GetNumRecipients()
  44. {
  45. return m_Recipients.GetSize();
  46. }
  47. BOOL CMailMessage::AddMultipleRecipients(LPCTSTR szRecipients )
  48. {
  49. TCHAR* buf;
  50. UINT pos;
  51. UINT start;
  52. CString sTemp;
  53. CString sEmail;
  54. CString sFriendly;
  55. UINT length;
  56. int nMark;
  57. int nMark2;
  58. ASSERT( szRecipients != NULL );
  59. // Add Recipients
  60. //
  61. length = strlen( szRecipients );
  62. buf = new TCHAR[ length + 1 ]; // Allocate a work area (don't touch parameter itself)
  63. strcpy( buf, szRecipients );
  64. for( pos = 0, start = 0; pos <= length; pos++ )
  65. {
  66. if( buf[ pos ] == ';' ||
  67. buf[ pos ] == 0 )
  68. {
  69. // First, pick apart the sub-strings (separated by ';')
  70. //  Store it in sTemp.
  71. //
  72. buf[ pos ] = 0; // Redundant when at the end of string, but who cares.
  73. sTemp = &buf[ start ];
  74. // Now divide the substring into friendly names and e-mail addresses.
  75. //
  76. nMark = sTemp.Find( '<' );
  77. if( nMark >= 0 )
  78. {
  79. sFriendly = sTemp.Left( nMark );
  80. nMark2 = sTemp.Find( '>' );
  81. if( nMark2 < nMark )
  82. {
  83. delete[] buf;
  84. return FALSE;
  85. }
  86. // End of mark at closing bracket or end of string
  87. nMark2 > -1 ? nMark2 = nMark2 : nMark2 = sTemp.GetLength() - 1;
  88. sEmail = sTemp.Mid( nMark + 1, nMark2 - (nMark + 1) );
  89. }
  90. else
  91. {
  92. sEmail = sTemp;
  93. sFriendly = "";
  94. }
  95. AddRecipient( sEmail, sFriendly );
  96. start = pos + 1;
  97. }
  98. }
  99. delete[] buf;
  100. return TRUE;
  101. }