MailMessage.cpp
上传用户:hsaozhenyu
上传日期:2007-01-03
资源大小:48k
文件大小:3k
源码类别:

Email客户端

开发平台:

Visual C++

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