MailerDlg.cpp
上传用户:yuanjp
上传日期:2015-04-29
资源大小:15k
文件大小:4k
源码类别:

Email服务器

开发平台:

Visual C++

  1. // MailerDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Mailer.h"
  5. #include "MailerDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMailerDlg dialog
  13. CMailerDlg::CMailerDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(CMailerDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CMailerDlg)
  17. m_From = _T("you@xx.xx");
  18. m_Message = _T(":)");
  19. m_Server = _T("xxx.xxx.xxx.xxx");
  20. m_To = _T("to@xx.xx");
  21. //}}AFX_DATA_INIT
  22. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  23. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  24. }
  25. void CMailerDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CMailerDlg)
  29. DDX_Text(pDX, IDC_EDIT_FROM, m_From);
  30. DDX_Text(pDX, IDC_EDIT_MESSAGE, m_Message);
  31. DDX_Text(pDX, IDC_EDIT_SERVER, m_Server);
  32. DDX_Text(pDX, IDC_EDIT_TO, m_To);
  33. //}}AFX_DATA_MAP
  34. }
  35. BEGIN_MESSAGE_MAP(CMailerDlg, CDialog)
  36. //{{AFX_MSG_MAP(CMailerDlg)
  37. ON_WM_PAINT()
  38. ON_WM_QUERYDRAGICON()
  39. ON_BN_CLICKED(IDC_ABOUT, OnAbout)
  40. //}}AFX_MSG_MAP
  41. END_MESSAGE_MAP()
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CMailerDlg message handlers
  44. BOOL CMailerDlg::OnInitDialog()
  45. {
  46. CDialog::OnInitDialog();
  47. // Set the icon for this dialog.  The framework does this automatically
  48. //  when the application's main window is not a dialog
  49. SetIcon(m_hIcon, TRUE); // Set big icon
  50. SetIcon(m_hIcon, FALSE); // Set small icon
  51. // TODO: Add extra initialization here
  52. return TRUE;  // return TRUE  unless you set the focus to a control
  53. }
  54. // If you add a minimize button to your dialog, you will need the code below
  55. //  to draw the icon.  For MFC applications using the document/view model,
  56. //  this is automatically done for you by the framework.
  57. void CMailerDlg::OnPaint() 
  58. {
  59. if (IsIconic())
  60. {
  61. CPaintDC dc(this); // device context for painting
  62. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  63. // Center icon in client rectangle
  64. int cxIcon = GetSystemMetrics(SM_CXICON);
  65. int cyIcon = GetSystemMetrics(SM_CYICON);
  66. CRect rect;
  67. GetClientRect(&rect);
  68. int x = (rect.Width() - cxIcon + 1) / 2;
  69. int y = (rect.Height() - cyIcon + 1) / 2;
  70. // Draw the icon
  71. dc.DrawIcon(x, y, m_hIcon);
  72. }
  73. else
  74. {
  75. CDialog::OnPaint();
  76. }
  77. }
  78. // The system calls this to obtain the cursor to display while the user drags
  79. //  the minimized window.
  80. HCURSOR CMailerDlg::OnQueryDragIcon()
  81. {
  82. return (HCURSOR) m_hIcon;
  83. }
  84. // 单击"发送"按钮后发送邮件到目标地址
  85. void CMailerDlg::OnOK() 
  86. {
  87. UpdateData(TRUE);
  88. //得到服务器地址,不过注意这里最好是IP地址
  89. CString Serv = "HELO " + m_Server + "rn";
  90. //发送者的地址
  91. CString From = "MAIL FROM:<" + m_From + ">rn";
  92. //收信者地址
  93. CString To = "RCPT TO:<" + m_To + ">rn";
  94. //发送邮件的文本内容
  95. CString Text = m_Message + "rnrn.rn";
  96. char *MailMessage[] = 
  97. {
  98. Serv.GetBuffer(1),
  99. From.GetBuffer(1),
  100. To.GetBuffer(1),
  101. "DATArn",
  102. Text.GetBuffer(1),
  103. "QUITrn",
  104. NULL
  105. };
  106. WSADATA Wsa;
  107. //进行WINSOCK的设置
  108. WSAStartup(0x0101,&Wsa);
  109. SOCKET s = socket(AF_INET,SOCK_STREAM,0);
  110. SOCKADDR_IN sin;
  111. sin.sin_addr.s_addr = inet_addr(m_Server);
  112. sin.sin_family = AF_INET;
  113. //注意邮件服务器的侦听端口
  114. sin.sin_port = htons(25);
  115. if(connect(s,(LPSOCKADDR)&sin,sizeof(sin)) == SOCKET_ERROR)
  116. MessageBox("Error: can't connect to server :(","Error",MB_OK|MB_ICONERROR);
  117. int iLength = 0;
  118. int iEnd = 0;
  119. char sBuff[255] = "";
  120. int iMsg = 0;
  121. //循环发送内容,直到要发送的内容发送完毕
  122. do
  123. {
  124. iLength = recv(s,(LPSTR)sBuff+iEnd, sizeof(sBuff)-iEnd,0);
  125. iEnd += iLength;
  126. sBuff[iEnd] = '';
  127. send(s,(LPSTR)MailMessage[iMsg],strlen(MailMessage[iMsg]),0);
  128. iMsg++;
  129. }while(MailMessage[iMsg]);
  130. //关闭连接
  131. closesocket(s);
  132. WSACleanup();
  133. }
  134. void CMailerDlg::OnAbout() 
  135. {
  136. }