C ile SMTP Uygulaması
Üniversitede ödev olarak gerçekleştirdiğim; C programlama dili ile SMTP protokollünü kullanarak okulun SMTP sunucusuna bağlanıp mail gönderme işlemini yapan kodlarımı paylaşmak istedim.
Uygulama mantığındaki kodları sırasıyla paylaşçak olursak;
Maile ait olan gönderen , alıcı ve gönderilcek olan veriye ait bilgiyi
sokete yazarak sunucuya gönderiyoruz.
//reading first msg from server
contBuf = recv(sockfd, buf, 1000, 0);
buf[contBuf]='\0';
printf("S:FIRST MSG RECEIVED [%s]\n",buf);
/*send a string to the server*/
strcpy(msg,"helo fe.up.pt\r\n");
printf("C:[%s]\n",msg);
write(sockfd, msg, strlen(msg));
//reading 2nd msg from server
contBuf = recv(sockfd, buf, 1000, 0);
buf[contBuf]='\0';
printf("S:[%s]\n",buf);
//mail from info
strcpy(msg,"MAIL FROM:");
strncat(msg,emailfrom,strlen(emailfrom));
strncat(msg,"\r\n",4);
write(sockfd, msg, strlen(msg));
printf("C:[%s]\n",msg);
contBuf = recv(sockfd, buf, 1000, 0);
buf[contBuf]='\0';
printf("S:[%s]\n",buf);
//receipt to info
strcpy(msg,"RCPT TO:<");
strncat(msg,emailto,strlen(emailto));
strncat(msg,">\r\n",3);
write(sockfd, msg, strlen(msg));
printf("C:[%s]\n",msg);
contBuf = recv(sockfd, buf, 1000, 0);
buf[contBuf]='\0';
printf("S:[%s]\n",buf);
//data
strcpy(msg,"DATA\r\n");
write(sockfd, msg, strlen(msg));
printf("C:[%s]\n",msg);
contBuf = recv(sockfd, buf, 1000, 0);
buf[contBuf]='\0';
printf("S:[%s]\n",buf);
Eğer ki göndereceğimiz maile bir de ek txt dosyası eklemek istersek; göndermek istediğimiz dosyayı base64 kodlama sistemine göre kodlayıp mailimizi MIME protokolünün kurallarına göre düzenledikten sonra verimizi sokete yazdırarak sunucuya yollarız.
//emailmessage with MIME
if(strcmp(filepath,"")>0)
readFile(filepath);
strcpy(msg,"MIME-version: 1.0\n");
strcat(msg,"Content-type: multipart/mixed; boundary='frontier'\n");
strcat(msg,"--frontier\nContent-type: text/plain \n");
strcat(msg,emailmsg);
if(strcmp(filepath,"")>0)
{
strcat(msg,"\n--frontier\n");
strcat(msg,"Content-Type: application/octet-stream; file='");
strcat(msg,filepath);
strcat(msg,"'\nContent-Transfer-Encoding: base64\n");
strcat(msg,encoded);
}
strcat(msg,"\n--frontier--");
strcat(msg,"\r\n.\r\n");
write(sockfd, msg, strlen(msg));
printf("C:[%s]\n",msg);
contBuf = recv(sockfd, buf, 1000, 0);
buf[contBuf]='\0';
printf("S:[%s]\n",buf);
About this entry
You’re currently reading “ C ile SMTP Uygulaması ,” an entry on Onur Semih Sevim
- Published:
- 6.17.09 / 10am
- Category:
- Yazılım
No comments
Jump to comment form | comments rss [?] | trackback uri [?]