Send Email through C++ using Gmail Account -
Send Email through C++ using Gmail Account -
i want send email through c/c++ programme using gmail account. find resources linux , did not work me. want on windows. sample program, or suggestion, how can appreciated.
thanks
#define win32_lean_and_mean #include <stdio.h> #include <stdlib.h> #include <fstream.h> #include <iostream.h> #include <windows.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") // insist on @ to the lowest degree winsock v1.1 const version_major = 1; const version_minor = 1; #define crlf "\r\n" // carriage-return/line feed pair void showusage(void) { cout << "usage: sendmail mailserv to_addr from_addr messagefile" << endl << "example: sendmail smtp.myisp.com rcvr@elsewhere.com my_id@mydomain.com message.txt" << endl; exit(1); } // basic error checking send() , recv() functions void check(int istatus, char *szfunction) { if((istatus != socket_error) && (istatus)) return; cerr << "error during phone call " << szfunction << ": " << istatus << " - " << getlasterror() << endl; } int main(int argc, char *argv[]) { int iprotocolport = 0; char szsmtpservername[64] = ""; char sztoaddr[64] = ""; char szfromaddr[64] = ""; char szbuffer[4096] = ""; char szline[255] = ""; char szmsgline[255] = ""; socket hserver; wsadata wsdata; lphostent lphostentry; lpservent lpserventry; sockaddr_in sockaddr; // check 4 command-line args if(argc != 5) showusage(); // load command-line args lstrcpy(szsmtpservername, argv[1]); lstrcpy(sztoaddr, argv[2]); lstrcpy(szfromaddr, argv[3]); // create input stream reading email message file ifstream msgfile(argv[4]); // effort intialize winsock (1.1 or later) if(wsastartup(makeword(version_major, version_minor), &wsdata)) { cout << "cannot find winsock v" << version_major << "." << version_minor << " or later!" << endl; homecoming 1; } // lookup email server's ip address. lphostentry = gethostbyname(szsmtpservername); if(!lphostentry) { cout << "cannot find smtp mail service server " << szsmtpservername << endl; homecoming 1; } // create tcp/ip socket, no specific protocol hserver = socket(pf_inet, sock_stream, 0); if(hserver == invalid_socket) { cout << "cannot open mail service server socket" << endl; homecoming 1; } // mail service service port lpserventry = getservbyname("mail", 0); // utilize smtp default port if no other port specified if(!lpserventry) iprotocolport = htons(ipport_smtp); else iprotocolport = lpserventry->s_port; // setup socket address construction sockaddr.sin_family = af_inet; sockaddr.sin_port = iprotocolport; sockaddr.sin_addr = *((lpin_addr)*lphostentry->h_addr_list); // connect socket if(connect(hserver, (psockaddr) &sockaddr, sizeof(sockaddr))) { cout << "error connecting server socket" << endl; homecoming 1; } // receive initial response smtp server check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() reply"); // send helo server.com sprintf(szmsgline, "helo %s%s", szsmtpservername, crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() helo"); check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() helo"); // send mail service from: <sender@mydomain.com> sprintf(szmsgline, "mail from:<%s>%s", szfromaddr, crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() mail service from"); check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() mail service from"); // send rcpt to: <receiver@domain.com> sprintf(szmsgline, "rcpt to:<%s>%s", sztoaddr, crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() rcpt to"); check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() rcpt to"); // send info sprintf(szmsgline, "data%s", crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() data"); check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() data"); // send lines of message body (using supplied text file) msgfile.getline(szline, sizeof(szline)); // first line // each line of message text... { sprintf(szmsgline, "%s%s", szline, crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() message-line"); msgfile.getline(szline, sizeof(szline)); // next line. } while(msgfile.good()); // send blank line , period sprintf(szmsgline, "%s.%s", crlf, crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() end-message"); check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() end-message"); // send quit sprintf(szmsgline, "quit%s", crlf); check(send(hserver, szmsgline, strlen(szmsgline), 0), "send() quit"); check(recv(hserver, szbuffer, sizeof(szbuffer), 0), "recv() quit"); // study message has been sent cout << "sent " << argv[4] << " email message " << sztoaddr << endl; // close server socket , prepare exit. closesocket(hserver); wsacleanup(); homecoming 0; }
but think not gmail. because google mail service uses different techniques. link tls ssl,
you need library implements smtp.
for c++, suggest take @ vmime, though i'm not exclusively sure whether it's supported on windows (there's section on compiling mingw, though, imagine there's native winsock support).
alternatively, c library libcurl handles many protocols, including smtp.
c++ c email visual-c++ email-client
Comments
Post a Comment