Thread: sending message to GMAIL using SMTP

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Sep 2006
    Posts
    230

    sending message to GMAIL using SMTP

    Hi,
    I was trying to send a message to my gmail account using a program I found on the web. I had to modify it and ask for help on a forum to get it to work. I was successfully receiving the emails and everything looked fine. Then after about 2 days, it stopped working. So I checked the log file and this is what it contained:
    Connecting....
    220 mx.google.com ESMTP l12si10852221fgb.8

    helo me.somepalace.com
    250 mx.google.com at your service

    MAIL FROM:<[email protected]>
    250 2.1.0 OK

    RCPT TO:<[email protected]>
    250 2.1.5 OK

    DATA
    354 Go ahead

    To:[email protected]
    From:[email protected]
    Subject:Logged

    .

    550-5.7.1 [87.109.73.118] The IP you're using to send email is not authorized

    550-5.7.1 to send email directly to our servers. Please use

    550 5.7.1 the SMTP relay at your service provider instead. l12si10852221fgb.8

    quit
    221 2.0.0 mx.google.com closing connection l12si10852221fgb.8
    Gmail is obviously not allowing me to send emails using my IP. But I don't know much about networking. All I know is how to setup my home network...
    Is there any way to fix this?
    Here's the code:
    Code:
    #define cmailserver "gmail-smtp-in.l.google.com"
    #define cemailto "[email protected]"
    #define cemailfrom "[email protected]"
    #define SMTPLog "SMTP log.txt"
    #define cemailsubject "test"
    #define waittime 30
    
    int MailIt(char *mailserver, char *emailto, char *emailfrom,
               char *emailsubject, char *emailmessage, long maxlen)
    {
    	SOCKET sockfd;
        WSADATA wsaData;
        FILE *smtpfile;
    
        #define bufsize 300
        int bytes_sent;   /* Sock FD */
        int err;
        struct hostent *host;   /* info from gethostbyname */
        struct sockaddr_in dest_addr;   /* Host Address */
        char line[maxlen+100];
        char *Rec_Buf = (char*) malloc(bufsize+1);
        smtpfile=fopen(SMTPLog,"a+");
        if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR)
    	{
    		fputs("WSAStartup failed",smtpfile);
    		WSACleanup();
    		return -1;
        }
        if ( (host=gethostbyname(mailserver)) == NULL)
    	{
    		perror("gethostbyname");
    		exit(1);
        }
        memset(&dest_addr,0,sizeof(dest_addr));
        memcpy(&(dest_addr.sin_addr),host->h_addr,host->h_length);
    
    	/* Prepare dest_addr */
    	dest_addr.sin_family= host->h_addrtype;  /* AF_INET from gethostbyname */
    	dest_addr.sin_port= htons(25); /* PORT defined above */
    
    	/* Get socket */
    
    	if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0)
    	{
    		perror("socket");
    		exit(1);
    	}
    	/* Connect !*/
    	fputs("Connecting....\n",smtpfile);
    
    	if (connect(sockfd, (struct sockaddr *)&dest_addr,sizeof(dest_addr)) == -1)
    	{
    		perror("connect");
            exit(1);
    	}
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	strcpy(line,"helo me.somepalace.com\n");
    	fputs(line,smtpfile);
    	bytes_sent=send(sockfd,line,strlen(line),0);
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	strcpy(line,"MAIL FROM:<");
    	strncat(line,emailfrom,strlen(emailfrom));
    	strncat(line,">\n",3);
    	fputs(line,smtpfile);
    	bytes_sent=send(sockfd,line,strlen(line),0);
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	strcpy(line,"RCPT TO:<");
    	strncat(line,emailto,strlen(emailto));
    	strncat(line,">\n",3);
    	fputs(line,smtpfile);
    	bytes_sent=send(sockfd,line,strlen(line),0);
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	strcpy(line,"DATA\n");
    	fputs(line,smtpfile);
    	bytes_sent=send(sockfd,line,strlen(line),0);
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	Sleep(waittime);
    	strcpy(line,"To:");
    	strcat(line,emailto);
    	strcat(line,"\n");
    	strcat(line,"From:");
    	strcat(line,emailfrom);
    	strcat(line,"\n");
    	strcat(line,"Subject:");
    	strcat(line,emailsubject);
    	//strcat(line,"\n");
    	//strcat(line,emailmessage);
    	strcat(line,"\r\n.\r\n");
    	fputs(line,smtpfile);
    	bytes_sent=send(sockfd,line,strlen(line),0);
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	strcpy(line,"quit\n");
    	fputs(line,smtpfile);
    	bytes_sent=send(sockfd,line,strlen(line),0);
    	Sleep(waittime);
    	err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    	fputs(Rec_Buf,smtpfile);
    	fclose(smtpfile);
    	#ifdef WIN32
    	closesocket(sockfd);
    	WSACleanup();
    	#else
    	close(sockfd);
    	#endif
    }
    I'm sorry if the code wasn't written very well, but I can't fix it because I don't understand it
    Last edited by Abda92; 02-20-2008 at 11:32 AM.
    I might not be a pro, but I'm usually right

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Strange string behavior
    By jcafaro10 in forum C Programming
    Replies: 2
    Last Post: 04-07-2009, 07:38 PM
  2. socket message sending and receiving problem
    By black in forum C Programming
    Replies: 5
    Last Post: 01-15-2007, 04:46 AM
  3. Message class ** Need help befor 12am tonight**
    By TransformedBG in forum C++ Programming
    Replies: 1
    Last Post: 11-29-2006, 11:03 PM
  4. Dialog Box Problems
    By Morgul in forum Windows Programming
    Replies: 21
    Last Post: 05-31-2005, 05:48 PM
  5. Tab Controls - API
    By -KEN- in forum Windows Programming
    Replies: 7
    Last Post: 06-02-2002, 09:44 AM