📄 authsmtp.cpp
字号:
// AuthSMTP.cpp: implementation of the CAuthSMTP class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "AuthSMTP.h"
#include "UTIL_Base64Coder.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAuthSMTP::CAuthSMTP()
{
m_sock.Create();
m_num=0;
}
CAuthSMTP::~CAuthSMTP()
{
m_sock.Close();
}
BOOL CAuthSMTP::Connect(CString SMTPHost)
{
char buf [1000];
// TCHAR local_host[80];
// memset(local_host,0,80);
for (int i=0;i < 512;i++)
buf[i]='\0';
m_sock.Connect((LPCTSTR)SMTPHost,25);
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
// gethostname( local_host, 80 ); //得到本地机器标准主机名
CString strSend = _T("HELO 263.net\r\n");
// strSend.Format(, "263.net");//local_host);
for (i=0;i < 512;i++)
buf[i]='\0';
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
return TRUE;
}
BOOL CAuthSMTP::Authent(CString mailUser, CString mailPwd)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend=_T("AUTH LOGIN\r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
UTIL_Base64Coder cb;
CString strAuth = mailUser;
char chTemp[1024];
ZeroMemory(chTemp, 1024);
CString strEncode;
cb.Encode(strAuth.GetBuffer(0), strAuth.GetLength(),strEncode);
//strEncode就为加密后的密文
sprintf(chTemp, "%s\r\n", strEncode);
strAuth.ReleaseBuffer();
strSend.Format(_T("%s\r\n"),strEncode);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
strAuth = mailPwd;
ZeroMemory(chTemp, 1024);
cb.Encode(strAuth.GetBuffer(0), strAuth.GetLength(),strEncode);
//strEncode就为加密后的密文
sprintf(chTemp, "%s\r\n", strEncode);
strAuth.ReleaseBuffer();
strSend.Format(_T("%s\r\n"),strEncode);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
return TRUE;
}
BOOL CAuthSMTP::FromTo(CString mailFrom, CString mailTo)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend;
strSend.Format(_T("MAIL FROM:<%s>\r\n"),mailFrom);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
for (i=0;i < 512;i++)
buf[i]='\0';
strSend.Format(_T("RCPT TO:<%s>\r\n"),mailTo);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
return TRUE;
}
BOOL CAuthSMTP::SendEmail(CString Subject,CString Body)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend=_T("DATA\r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
strSend.Format(_T("SUBJECT:<%s>\r\n"),Subject);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
strSend.Format(_T("<%s>\r\n"),Body);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
for (i=0;i < 512;i++)
buf[i]='\0';
strSend=_T(".\r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
return TRUE;
}
BOOL CAuthSMTP::DisConnect()
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend=_T("QUIT \r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -