jeudi 12 mars 2015

SMTP cliat with SSL connection


I have next sample code of using SMPT client, when I am tring to send mail via mail which uses SSl I am getting next error:



550 SMTP is available only with SSL or TLS connection enabled.



How I can exend this sample for using SSL, for example to send e-mails via gmail, etc... I am interesting of using sockets and no exrnal lybrary:



int main()
{
if (FAILED (WSAStartup (MAKEWORD( 1,1 ), &ws)))
{
printf("Error in WSAStartup(...)\n");
return 1; }

// creating socket
s = socket (AF_INET, SOCK_STREAM, 0);
if (s == INVALID_SOCKET)
{
printf("Error in socket(...)\n");
return 1; }

//get server address
d_addr = gethostbyname ("smtp.mail.ru");
if (d_addr==NULL)
{
printf("Error in gethostbyname(...)\n");
return 1; };

// fill address parameters
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
addr.sin_port = htons (25);

// connecting...
if (SOCKET_ERROR == (connect (s, (sockaddr *) &addr,
sizeof (addr))))
{
printf("Error in connect(...)\n");
return 1; }

// waiting from answer from server
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// sy hello to server
strcpy(text,"HELO smtp.mail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// waiting approve from server
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// set sender
strcpy(text,"MAIL FROM: sender@mail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// waiting for approve
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// set receiver
strcpy(text,"RCPT TO: receiver@mtu-net.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// waiting for approve
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// ready to start sending letter
strcpy(text,"DATA\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// waiting for approve
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// from whom letter
strcpy(text,"FROM: sender@mail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// receiver
strcpy(text,"TO: receiver@mtu-net.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// letter subject
strcpy(text,"SUBJECT: test\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// letter text
strcpy(text,"Hi!\nIt is a message for you\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// telling that we finish
strcpy(text,"\r\n.\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// quit
strcpy(text,"QUIT");
send(s,text,strlen(text),0);
printf("send - %s", text);

// close socket
closesocket(s);

return 0;
}



Aucun commentaire:

Enregistrer un commentaire