C++메 일 보 내기 간단 한 실례 상세 설명

C++메 일 을 보 내 는 것 은 차단 식 socket 모델 입 니 다.데 이 터 를 보 낸 후에 반환 값 을 받 아야 계속 보 낼 수 있 습 니 다.
이 프로그램 은 메 일 첨부 파일 을 보 내지 않 고 첨부 파일 을 보 내 는 인 스 턴 스:C+첨부 파일 이 포 함 된 메 일 발송 기능 구현

#include <iostream>  
#include <string>  
#include <WinSock2.h> //     Windows 
using namespace std; 
#pragma comment(lib, "ws2_32.lib") /*  ws2_32.lib     */  
 
int main() 
{ 
 char buff[500]; //recv        
 string message; 
 
 WSADATA wsaData; 
 WORD wVersionRequested = MAKEWORD(2, 1); 
 //WSAStarup, WSA(Windows SocKNDs Asynchronous,Windows     )      
 int err = WSAStartup(wVersionRequested, &wsaData); 
 cout << "WSAStartup:" << err << endl; 
 SOCKET sockClient; //         
 sockClient = socket(AF_INET, SOCK_STREAM, 0); //  socket    
 
 HOSTENT* pHostent; 
 pHostent = gethostbyname("smtp.126.com"); //           
 SOCKADDR_IN addrServer; //      
 addrServer.sin_addr.S_un.S_addr = *((DWORD *)pHostent->h_addr_list[0]); //  smtp          ip     
 addrServer.sin_family = AF_INET; 
 addrServer.sin_port = htons(25); //    25  
 //int connect (SOCKET s , const struct sockaddr FAR *name , int namelen ); //     
 err = connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR)); //          
 cout << "connect:" << err << endl; 
 buff[recv(sockClient, buff, 500, 0)] = '\0'; 
 cout << "connect:" << buff << endl; 
 /* 
         
 */ 
 message = "ehlo 126.com\r
"; send(sockClient, message.c_str(), message.length(), 0); // ehlo buff[recv(sockClient, buff, 500, 0)] = '\0'; // cout << "helo:" << buff << endl; // message = "auth login \r
"; send(sockClient, message.c_str(), message.length(), 0); buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "auth login:" << buff << endl; /* base64 、 */ message = "xxxx\r
"; //base64 send(sockClient, message.c_str(), message.length(), 0); buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "usrname:" << buff << endl; message = "xxxx\r
";//base64 send(sockClient, message.c_str(), message.length(), 0); buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "password:" << buff << endl; /* MAIL RCPT , RCPT */ message = "MAIL FROM:<[email protected]> \r
RCPT TO:<[email protected]> \r
"; send(sockClient, message.c_str(), message.length(), 0); buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "mail from: " << buff << endl; buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "rcpt to: " << buff << endl; /* DATA */ message = "DATA\r
"; send(sockClient, message.c_str(), message.length(), 0); buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "data: " << buff << endl; message = "From: [email protected]\r
\ To: [email protected]\r
\ Cc: [email protected]\r
\ subject: subject\r
\r
\ Hello Alice\r
\ This is a test message with 4 header fields and 4 lines in the message body\r
\ your friend\r
\ Bob\r
.\r
"; // subject send(sockClient, message.c_str(), message.length(), 0); message = "QUIT\r
"; send(sockClient, message.c_str(), message.length(), 0); buff[recv(sockClient, buff, 500, 0)] = '\0'; cout << "QUIT:" << buff << endl; system("pause"); }
메 일 효과 도

Telnet 비교 해 봐.
메 일의 사용자 이름과 비밀 번 호 는 BASE 64 로 암호 화 됩 니 다.
이 사이트 로 온라인 으로 암호 화 할 수 있 습 니 다.도구 주소
dos 에서 smtp 서버 로그 인 명령
126 메 일 박스:telnet smtp.126.com 25
qq 메 일 박스:telnet smtp.qq.com 25

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기