folder Tahribat.com Forumları
linefolder C - C++
linefolder Bycodec-Den (C) De Yazılmış SMTP Mail Sender (Gmail)



Bycodec-Den (C) De Yazılmış SMTP Mail Sender (Gmail)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ByCodeC
    ByCodeC's avatar
    Kayıt Tarihi: 18/Ağustos/2007
    Erkek

    program google gmail'in SMTP servisi ile mail gönderir.

    en basit hanili yayınlıyorum kullanımı çok kolay

    fonksiyonun prototipi şöyledir:

    int MailIt (char *mailserver, char *emailto, char *emailfrom,char *emailsubject, char *emailmessage);

    mailserver = kullanılıcak SMTP server adresi olması gerekiyor gmail için ("gmail-smtp-in.l.google.com")

    emailto = mail'in gönderiliceği adres yazılıcak (banagelsin@gmail.com) adres gmail uzantılı olmalıdır.

    emailfrom = gönderici kısmında görünmesini istediğiniz adres yada isim ("superman -)")

    emailsubject = konu kısmında görünmesini istediğiniz şeyi yazın ("test mail")

    emailmessage = burasıda mail kısmında yazmak istediklerinizdir("cart curt feş mekan");

     

     

    örnekte verdiğim program çalıştıgını dizindeki bir dosyay açıp içindekileri adres kısmında girdiğiniz adrese göndermektedir.programın bulundugu klasöre mail.txt diye bir dosya açın ve içine mesajınızı yazın.

     

     

    /*
    ByCodeC SMTP gmail sender
    */

    /*
    projeye winsock.lib dosyasını inport etmeyi unutmayın !
    */

     

    #include <windows.h>
    #include <stdio.h>
    #include <string.h>
    #include <winuser.h>
    #include <windowsx.h>
    #include <time.h>
    #include <stdlib.h>

    int MailIt (char *mailserver, char *emailto, char *emailfrom,
    char *emailsubject, char *emailmessage);

    #define BUFSIZE 800
    #define waittime 500

    #define cmailserver  "gmail-smtp-in.l.google.com"       //gmail smtp server
    #define cemailto    "mail gönderilicek adres @gmail.com"
    #define cemailfrom "gönderici kısmında gözükmesini istediğiniz isim"
    #define LogLength 100
    #define SMTPLog "ring.txt"
    #define cemailsubject "konu"
    #define maxbuff 1000000


    int main(void)
    {
       int ch=0;
       unsigned int n=0;

       char *chr = (char *) malloc(maxbuff+1);
       strcpy(chr,"\r\n\r\n\r\n\r\n\r\n\r\n");

       FILE *fl;
       fl = fopen("mail.txt","r+");
       n = strlen(chr);
       if(fl == NULL)
                printf("dosya acIlamadI\n\n");
       while(ch != EOF){
           ch = fgetc(fl);
           chr[n++] = ch;
       }

        chr[n] = '\0';
    printf("[%d]\n\n",strlen(chr));
    puts(chr);
    system("pause");

     

    MailIt( cmailserver, cemailto, cemailfrom, cemailsubject,chr);

    system("pause");
       return 10;
    }


    int MailIt (char *mailserver, char *emailto, char *emailfrom,char *emailsubject, char *emailmessage){
        SOCKET sockfd;
        WSADATA wsaData;
        FILE *smtpfile;

        #define bufsize 3000

        int bytes_sent;
        int err;
        struct hostent *host;
        struct sockaddr_in dest_addr;

        char *line = (char *) malloc(maxbuff+1);
        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);


         dest_addr.sin_family= host->h_addrtype;
         dest_addr.sin_port= htons(25);

     

         if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0) {
            perror("socket");
            exit(1);
            }

         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);printf("%s\n",Rec_Buf);
         strcpy(line,"helo www.softembedded.com\n");
         fputs(line,smtpfile);printf("%s\n",line);
         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);printf("%s\n",Rec_Buf);
         strcpy(line,"MAIL FROM:<");
         strncat(line,emailfrom,strlen(emailfrom));
         strncat(line,">\n",3);
         fputs(line,smtpfile);printf("%s\n",line);
         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);printf("%s\n",Rec_Buf);
         strcpy(line,"RCPT TO:<");
         strncat(line,emailto,strlen(emailto));
         strncat(line,">\n",3);
         fputs(line,smtpfile);printf("%s\n",line);
         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);printf("%s\n",Rec_Buf);
         strcpy(line,"DATA\n");
         fputs(line,smtpfile);printf("%s\n",line);
         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);printf("%s\n",Rec_Buf);
         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);printf("%s\n",line);
         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);printf("%s\n",Rec_Buf);
         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);printf("%s\n",Rec_Buf);
         fclose(smtpfile);
         system("pause");
         #ifdef WIN32
         closesocket(sockfd);
         WSACleanup();
         system("pause");
         #else
         close(sockfd);
         #endif
    }

     


    Game Developer
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ByCodeC
    ByCodeC's avatar
    Kayıt Tarihi: 18/Ağustos/2007
    Erkek

    ByCodeC den yazarken kastekmek istediğim kodların tarafımdan yazıldıgı test edildiği ve en az bir aydır kullanıldıgını kastetmek istiyorum.ByCodeC den yazıyorsa konu başında kodu kullanmak isteyenlerin acaba kod çalışıyormu gibi bir kuşkuya düşmemelerini istiyorum.çünki ozman kendi yaptıkları hataları çok ufak bile olsa gözden kaçırabilirler.ama kodun çalıştıgından emin olurlarsa ufak bir gözden geçirmeyle yanlış yaptıkları yeri görüp düzeltir ve koddan faydalanabilirler.


    Game Developer
Toplam Hit: 2666 Toplam Mesaj: 2