c++发邮件
void SendEmail(CString strFrom,CString strSmtp,CString strTo,CString strSubject,CString strData)
{
sockaddr_in sin;
SOCKET s = socket(PF_INET,SOCK_STREAM,0);
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(25);
hostent* hptr = gethostbyname(strSmtp);
memcpy(&sin.sin_addr.S_un.S_addr, hptr->h_addr_list[0], hptr->h_length);
if(connect(s, (sockaddr*)&sin, sizeof(sin)))
{
AfxMessageBox( "connect failed" );
return;
}
char bufferresv[1024];
int len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
char bufferHello[] = "helo ehlo\r\n";
send(s, bufferHello, strlen(bufferHello), 0);
len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
// send "auth login"
char bufferLogin[] = "auth login\r\n";
send(s, bufferLogin, strlen(bufferLogin),0);
len = recv(s, bufferresv, 1024, 0);
// send "username" send "psw"
char bufferUserName[] = "登录名字的BASE64密文\r\n";
char bufferpsw[] = "密码的BASE64密文\r\n";
send(s,bufferUserName,strlen(bufferUserName),0);
len = recv(s, bufferresv, 1024, 0);
send(s,bufferpsw,strlen(bufferpsw),0);
len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
// mail from:
CString strMailFrom;
strMailFrom.Format("mail from:<%s>\r\n",strFrom);
send(s, strMailFrom, strMailFrom.GetLength(), 0);
len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
// rcpt to:
CString strMailTo;
strMailTo.Format("rcpt to:<%s>\r\n",strTo);
send(s, strMailTo, strMailTo.GetLength(), 0);
len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
// data
char bufferData[] = "data\r\n";
send(s, bufferData,strlen(bufferData), 0);
len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
strData.Format("%s\r\n",strData);
send(s,strData, strData.GetLength(),0);
send(s,strData, strData.GetLength(),0);
CString strSub;
strSub.Format("subject:%s\r\n",strSubject);
send(s, strSub, strSub.GetLength(), 0);
char bufferPoint[] = ".\r\n";
send(s, bufferPoint, strlen(bufferPoint), 0);
len = recv(s, bufferresv, 1024, 0);
bufferresv[len]=0;
}
posted on 2012-02-27 17:22 fanhongyue 阅读(698) 评论(0) 编辑 收藏 举报