6 个解决方案
#1
我也没做过,gz一下
#2
void CSmtestDlg::SendMail(LPCTSTR szin, CString &content)
{
CString szmail(szin);
CString szmtitle;
char bufRecv[256];
char bufCmd[256];
int nRecv;
DWORD *pdwCmd=(DWORD *)bufRecv;
pSock->Connect("smtp.citiz.net",25);
nRecv=pSock->Receive(bufRecv,255);
//strcpy(bufRecv,"220");
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_WELCOME:
strcpy(bufCmd,"EHLO local\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"AUTH LOGIN\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1zdW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHOK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RSET\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"DATA\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_DATASEND:
// GetDlgItemText(IDC_EDIT2,szmtitle);
szmtitle.Format("ums login name and password");
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd
,"From: <ums@citiz.net>UMS\r\nSubject: "
+szmtitle
+"\r\nTo: "
+szmail
+"\r\nContent-Type: text/plain\r\n\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
//GetDlgItemText(IDC_EDIT3,szmail);
szmail.Format(content);
strcpy(bufCmd,szmail+"\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd,".\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"QUIT\r\n");
//AfxMessageBox(bufCmd);
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_BYE:
AfxMessageBox("mail sended!");
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
OnSockClose();
}
{
CString szmail(szin);
CString szmtitle;
char bufRecv[256];
char bufCmd[256];
int nRecv;
DWORD *pdwCmd=(DWORD *)bufRecv;
pSock->Connect("smtp.citiz.net",25);
nRecv=pSock->Receive(bufRecv,255);
//strcpy(bufRecv,"220");
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_WELCOME:
strcpy(bufCmd,"EHLO local\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"AUTH LOGIN\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1zdW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHOK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RSET\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"DATA\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_DATASEND:
// GetDlgItemText(IDC_EDIT2,szmtitle);
szmtitle.Format("ums login name and password");
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd
,"From: <ums@citiz.net>UMS\r\nSubject: "
+szmtitle
+"\r\nTo: "
+szmail
+"\r\nContent-Type: text/plain\r\n\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
//GetDlgItemText(IDC_EDIT3,szmail);
szmail.Format(content);
strcpy(bufCmd,szmail+"\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd,".\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"QUIT\r\n");
//AfxMessageBox(bufCmd);
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_BYE:
AfxMessageBox("mail sended!");
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
OnSockClose();
}
#3
我是用citiz.net的账号的
呵呵
May you succeed!
呵呵
May you succeed!
#4
我网站那里有个登陆的发送、接收例子,你可以参考。
http://vcp4.51.net/VC/Net.htm
的第2、第3。
http://vcp4.51.net/VC/Net.htm
的第2、第3。
#5
你用这个函数试一下。
BOOL WINAPI MySendMail(CString strSMTP, CString strFrom,
CString strTo, CString strSubject, CString strBody)
{
BOOL bRet = FALSE;
CSocket sckSmtp;
if(sckSmtp.Create())
{
char chMonth[][12] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
SYSTEMTIME sm;
::GetLocalTime(&sm);
CString strDate;
// 日 月 年 时 分 秒
strDate.Format(_T("%02d %s %02d %02d:%02d:%02d"),
sm.wDay, chMonth[sm.wMonth-1], sm.wYear%100,
sm.wHour, sm.wMinute, sm.wSecond);
char chTemp[1024];
int nRet = -1;
Sleep(100);
if(sckSmtp.Connect(strSMTP, 25))
{
do
{
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
// break ;
//欢迎用户
AfxMessageBox(chTemp);
TCHAR local_host[80];
ZeroMemory(local_host, 80*sizeof(TCHAR));
::gethostname(local_host, 80);
CString strUser = CString(local_host);
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "HELO %s\r\n", strUser);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//mail from
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "MAIL FROM: <%s>\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//rcpt to
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "RCPT TO: <%s>\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//Data
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "DATA\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//信件内容
//时间
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Date: %s\r\n", strDate);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//From
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "From:%s\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//To
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "To:%s\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//CC
// ZeroMemory(chTemp, 1024);
// sprintf(chTemp, "CC:%s\r\n", strCC);
// sckSmtp.Send(chTemp, strlen(chTemp));
//Subject
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Subject:%s\r\n", strSubject);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//内容
int nLen = strBody.GetLength() + 5;
char *chBody = new char[nLen];
ZeroMemory(chBody, nLen);
sprintf(chBody, "%s\r\n", strBody);
nRet = sckSmtp.Send(chBody, strlen(chBody));
Sleep(100);
delete []chBody;
if(nRet < 0)
break ;
//结束
ZeroMemory(chTemp, 1024);
sprintf(chTemp, ".\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//退出
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "QUIT\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
bRet = TRUE;
}while(0);
}
sckSmtp.Close();
}
return bRet;
}
BOOL WINAPI MySendMail(CString strSMTP, CString strFrom,
CString strTo, CString strSubject, CString strBody)
{
BOOL bRet = FALSE;
CSocket sckSmtp;
if(sckSmtp.Create())
{
char chMonth[][12] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
SYSTEMTIME sm;
::GetLocalTime(&sm);
CString strDate;
// 日 月 年 时 分 秒
strDate.Format(_T("%02d %s %02d %02d:%02d:%02d"),
sm.wDay, chMonth[sm.wMonth-1], sm.wYear%100,
sm.wHour, sm.wMinute, sm.wSecond);
char chTemp[1024];
int nRet = -1;
Sleep(100);
if(sckSmtp.Connect(strSMTP, 25))
{
do
{
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
// break ;
//欢迎用户
AfxMessageBox(chTemp);
TCHAR local_host[80];
ZeroMemory(local_host, 80*sizeof(TCHAR));
::gethostname(local_host, 80);
CString strUser = CString(local_host);
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "HELO %s\r\n", strUser);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//mail from
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "MAIL FROM: <%s>\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//rcpt to
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "RCPT TO: <%s>\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//Data
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "DATA\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//信件内容
//时间
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Date: %s\r\n", strDate);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//From
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "From:%s\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//To
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "To:%s\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//CC
// ZeroMemory(chTemp, 1024);
// sprintf(chTemp, "CC:%s\r\n", strCC);
// sckSmtp.Send(chTemp, strlen(chTemp));
//Subject
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Subject:%s\r\n", strSubject);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//内容
int nLen = strBody.GetLength() + 5;
char *chBody = new char[nLen];
ZeroMemory(chBody, nLen);
sprintf(chBody, "%s\r\n", strBody);
nRet = sckSmtp.Send(chBody, strlen(chBody));
Sleep(100);
delete []chBody;
if(nRet < 0)
break ;
//结束
ZeroMemory(chTemp, 1024);
sprintf(chTemp, ".\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//退出
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "QUIT\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
bRet = TRUE;
}while(0);
}
sckSmtp.Close();
}
return bRet;
}
#6
nonocast(如果没有如果)
您写的只是ums@citiz.net的,我希望的是只要再输入一遍用户名和密码就通过SMTP的验证,现在的大部分邮箱都需要SMTP的验证,如果不能通过的话,邮件也就发不出去了,那这个程序就没什么价值了,还请您再看看
zhaowenlong(梦难求)
您的这个函数好象并不包含SMTP验证的部分,是否误解了我的意思?
再次感谢各位的热情帮助,希望继续关注,谢谢了
您写的只是ums@citiz.net的,我希望的是只要再输入一遍用户名和密码就通过SMTP的验证,现在的大部分邮箱都需要SMTP的验证,如果不能通过的话,邮件也就发不出去了,那这个程序就没什么价值了,还请您再看看
zhaowenlong(梦难求)
您的这个函数好象并不包含SMTP验证的部分,是否误解了我的意思?
再次感谢各位的热情帮助,希望继续关注,谢谢了
#1
我也没做过,gz一下
#2
void CSmtestDlg::SendMail(LPCTSTR szin, CString &content)
{
CString szmail(szin);
CString szmtitle;
char bufRecv[256];
char bufCmd[256];
int nRecv;
DWORD *pdwCmd=(DWORD *)bufRecv;
pSock->Connect("smtp.citiz.net",25);
nRecv=pSock->Receive(bufRecv,255);
//strcpy(bufRecv,"220");
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_WELCOME:
strcpy(bufCmd,"EHLO local\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"AUTH LOGIN\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1zdW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHOK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RSET\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"DATA\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_DATASEND:
// GetDlgItemText(IDC_EDIT2,szmtitle);
szmtitle.Format("ums login name and password");
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd
,"From: <ums@citiz.net>UMS\r\nSubject: "
+szmtitle
+"\r\nTo: "
+szmail
+"\r\nContent-Type: text/plain\r\n\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
//GetDlgItemText(IDC_EDIT3,szmail);
szmail.Format(content);
strcpy(bufCmd,szmail+"\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd,".\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"QUIT\r\n");
//AfxMessageBox(bufCmd);
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_BYE:
AfxMessageBox("mail sended!");
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
OnSockClose();
}
{
CString szmail(szin);
CString szmtitle;
char bufRecv[256];
char bufCmd[256];
int nRecv;
DWORD *pdwCmd=(DWORD *)bufRecv;
pSock->Connect("smtp.citiz.net",25);
nRecv=pSock->Receive(bufRecv,255);
//strcpy(bufRecv,"220");
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_WELCOME:
strcpy(bufCmd,"EHLO local\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"AUTH LOGIN\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHLOGIN:
strcpy(bufCmd,"dW1zdW1z\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_AUTHOK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RSET\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"MAIL FROM: <ums@citiz.net>\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"RCPT TO: <"+szmail+">\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"DATA\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_DATASEND:
// GetDlgItemText(IDC_EDIT2,szmtitle);
szmtitle.Format("ums login name and password");
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd
,"From: <ums@citiz.net>UMS\r\nSubject: "
+szmtitle
+"\r\nTo: "
+szmail
+"\r\nContent-Type: text/plain\r\n\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
//GetDlgItemText(IDC_EDIT3,szmail);
szmail.Format(content);
strcpy(bufCmd,szmail+"\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
//////////////////////////////////////////////////////////////////////////
strcpy(bufCmd,".\r\n");
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_OK:
strcpy(bufCmd,"QUIT\r\n");
//AfxMessageBox(bufCmd);
pSock->Send(bufCmd,strlen(bufCmd));
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
nRecv=pSock->Receive(bufRecv,255);
bufRecv[3]='\0';
switch(*pdwCmd)
{
case SMTP_BYE:
AfxMessageBox("mail sended!");
break;
default:
OnSockClose();
bufRecv[3]=' ';
bufRecv[nRecv]='\0';
AfxMessageBox(bufRecv);
return;
}
OnSockClose();
}
#3
我是用citiz.net的账号的
呵呵
May you succeed!
呵呵
May you succeed!
#4
我网站那里有个登陆的发送、接收例子,你可以参考。
http://vcp4.51.net/VC/Net.htm
的第2、第3。
http://vcp4.51.net/VC/Net.htm
的第2、第3。
#5
你用这个函数试一下。
BOOL WINAPI MySendMail(CString strSMTP, CString strFrom,
CString strTo, CString strSubject, CString strBody)
{
BOOL bRet = FALSE;
CSocket sckSmtp;
if(sckSmtp.Create())
{
char chMonth[][12] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
SYSTEMTIME sm;
::GetLocalTime(&sm);
CString strDate;
// 日 月 年 时 分 秒
strDate.Format(_T("%02d %s %02d %02d:%02d:%02d"),
sm.wDay, chMonth[sm.wMonth-1], sm.wYear%100,
sm.wHour, sm.wMinute, sm.wSecond);
char chTemp[1024];
int nRet = -1;
Sleep(100);
if(sckSmtp.Connect(strSMTP, 25))
{
do
{
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
// break ;
//欢迎用户
AfxMessageBox(chTemp);
TCHAR local_host[80];
ZeroMemory(local_host, 80*sizeof(TCHAR));
::gethostname(local_host, 80);
CString strUser = CString(local_host);
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "HELO %s\r\n", strUser);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//mail from
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "MAIL FROM: <%s>\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//rcpt to
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "RCPT TO: <%s>\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//Data
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "DATA\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//信件内容
//时间
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Date: %s\r\n", strDate);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//From
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "From:%s\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//To
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "To:%s\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//CC
// ZeroMemory(chTemp, 1024);
// sprintf(chTemp, "CC:%s\r\n", strCC);
// sckSmtp.Send(chTemp, strlen(chTemp));
//Subject
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Subject:%s\r\n", strSubject);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//内容
int nLen = strBody.GetLength() + 5;
char *chBody = new char[nLen];
ZeroMemory(chBody, nLen);
sprintf(chBody, "%s\r\n", strBody);
nRet = sckSmtp.Send(chBody, strlen(chBody));
Sleep(100);
delete []chBody;
if(nRet < 0)
break ;
//结束
ZeroMemory(chTemp, 1024);
sprintf(chTemp, ".\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//退出
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "QUIT\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
bRet = TRUE;
}while(0);
}
sckSmtp.Close();
}
return bRet;
}
BOOL WINAPI MySendMail(CString strSMTP, CString strFrom,
CString strTo, CString strSubject, CString strBody)
{
BOOL bRet = FALSE;
CSocket sckSmtp;
if(sckSmtp.Create())
{
char chMonth[][12] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
SYSTEMTIME sm;
::GetLocalTime(&sm);
CString strDate;
// 日 月 年 时 分 秒
strDate.Format(_T("%02d %s %02d %02d:%02d:%02d"),
sm.wDay, chMonth[sm.wMonth-1], sm.wYear%100,
sm.wHour, sm.wMinute, sm.wSecond);
char chTemp[1024];
int nRet = -1;
Sleep(100);
if(sckSmtp.Connect(strSMTP, 25))
{
do
{
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
// break ;
//欢迎用户
AfxMessageBox(chTemp);
TCHAR local_host[80];
ZeroMemory(local_host, 80*sizeof(TCHAR));
::gethostname(local_host, 80);
CString strUser = CString(local_host);
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "HELO %s\r\n", strUser);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//mail from
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "MAIL FROM: <%s>\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//rcpt to
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "RCPT TO: <%s>\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//Data
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "DATA\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//信件内容
//时间
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Date: %s\r\n", strDate);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//From
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "From:%s\r\n", strFrom);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//To
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "To:%s\r\n", strTo);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//CC
// ZeroMemory(chTemp, 1024);
// sprintf(chTemp, "CC:%s\r\n", strCC);
// sckSmtp.Send(chTemp, strlen(chTemp));
//Subject
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "Subject:%s\r\n", strSubject);
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
//内容
int nLen = strBody.GetLength() + 5;
char *chBody = new char[nLen];
ZeroMemory(chBody, nLen);
sprintf(chBody, "%s\r\n", strBody);
nRet = sckSmtp.Send(chBody, strlen(chBody));
Sleep(100);
delete []chBody;
if(nRet < 0)
break ;
//结束
ZeroMemory(chTemp, 1024);
sprintf(chTemp, ".\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
if(nRet < 0)
break ;
//接收信息
ZeroMemory(chTemp, 1024);
nRet = sckSmtp.Receive(chTemp, 1024);
if(nRet < 0)
break ;
if(strncmp(chTemp, "220", 3) != 0 &&
strncmp(chTemp, "250", 3) != 0 &&
strncmp(chTemp, "354", 3) != 0 &&
strncmp(chTemp, "221", 3) != 0) // 220, 250, 354, 221成功
break ;
//退出
ZeroMemory(chTemp, 1024);
sprintf(chTemp, "QUIT\r\n");
nRet = sckSmtp.Send(chTemp, strlen(chTemp));
Sleep(100);
if(nRet < 0)
break ;
bRet = TRUE;
}while(0);
}
sckSmtp.Close();
}
return bRet;
}
#6
nonocast(如果没有如果)
您写的只是ums@citiz.net的,我希望的是只要再输入一遍用户名和密码就通过SMTP的验证,现在的大部分邮箱都需要SMTP的验证,如果不能通过的话,邮件也就发不出去了,那这个程序就没什么价值了,还请您再看看
zhaowenlong(梦难求)
您的这个函数好象并不包含SMTP验证的部分,是否误解了我的意思?
再次感谢各位的热情帮助,希望继续关注,谢谢了
您写的只是ums@citiz.net的,我希望的是只要再输入一遍用户名和密码就通过SMTP的验证,现在的大部分邮箱都需要SMTP的验证,如果不能通过的话,邮件也就发不出去了,那这个程序就没什么价值了,还请您再看看
zhaowenlong(梦难求)
您的这个函数好象并不包含SMTP验证的部分,是否误解了我的意思?
再次感谢各位的热情帮助,希望继续关注,谢谢了