ソケットSMTPメール送信
Posted: 2010年4月09日(金) 07:24
度々すみません・・・
ソケット繋がってHTTPリクエストもできました。
そこで本来ソケット通信したかった目的、
SMTP接続メール送信をしようと思いました。
----------------------------------------------------------------
/*ソケット初期化*/
ret = WSAStartup(0x0101, &wsaData);
if(ret != 0)
{
printf(">Socket initialization ERROR.\n");
}
else
{
hostent = gethostbyname(host);
memcpy(&inaddr,hostent->h_addr_list[0],4);
strcpy(szIP,inet_ntoa(inaddr));
printf(">Socket initialization OK.\n");
}
Sleep(1000);
/*ソケット作成*/
s = socket(AF_INET,SOCK_STREAM,0);
if(s == SOCKET_ERROR)
{
printf(">Socket making ERROR.\n");
}
else
{
printf(">Socket making OK.\n");
}
Sleep(1000);
/*送信先セット*/
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(szIP);
sa.sin_port = htons(25);
/*サーバー接続*/
check = connect(s,(SOCKADDR *)&sa,sizeof(sa));
if(check == SOCKET_ERROR)
{
printf(">Server connection ERROR.\n");
}
else
{
printf(">Server connection OK.\n");
}
Sleep(1000);
/*送受信*/
strcpy(buf,"HELO ");
strcat(buf,host);
strcat(buf,"\r\n");
strcat(buf,"MAIL FROM:<");
strcat(buf,from);
strcat(buf,">\r\n");
strcat(buf,"RCPT TO:<");
strcat(buf,to);
strcat(buf,">\r\n");
strcat(buf,"DATE\r\n");
strcat(buf,sub);
strcat(buf,"\r\n");
strcat(buf,body);
strcat(buf,"\r\n");
strcat(buf,"\r\n.\r\n");
strcat(buf,"RSET\r\n");
send(s,buf,strlen(buf),0);
recN = recv(s,buf,sizeof(buf),0);
for(i=0; i<recN; i++)
{
printf("%s",buf);
}
// ソケットの破棄
closesocket(s);
// クリーンアップ
WSACleanup();
-----------------------------------------------------------------
どこか間違ってますか?
メールは送れないし
最後の
for(i=0; i<reN; i++)
{
printf("%s",buf);
}
で受信文字列も見れないし・・・
わかる方ご教授お願いします。
ソケット繋がってHTTPリクエストもできました。
そこで本来ソケット通信したかった目的、
SMTP接続メール送信をしようと思いました。
----------------------------------------------------------------
/*ソケット初期化*/
ret = WSAStartup(0x0101, &wsaData);
if(ret != 0)
{
printf(">Socket initialization ERROR.\n");
}
else
{
hostent = gethostbyname(host);
memcpy(&inaddr,hostent->h_addr_list[0],4);
strcpy(szIP,inet_ntoa(inaddr));
printf(">Socket initialization OK.\n");
}
Sleep(1000);
/*ソケット作成*/
s = socket(AF_INET,SOCK_STREAM,0);
if(s == SOCKET_ERROR)
{
printf(">Socket making ERROR.\n");
}
else
{
printf(">Socket making OK.\n");
}
Sleep(1000);
/*送信先セット*/
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(szIP);
sa.sin_port = htons(25);
/*サーバー接続*/
check = connect(s,(SOCKADDR *)&sa,sizeof(sa));
if(check == SOCKET_ERROR)
{
printf(">Server connection ERROR.\n");
}
else
{
printf(">Server connection OK.\n");
}
Sleep(1000);
/*送受信*/
strcpy(buf,"HELO ");
strcat(buf,host);
strcat(buf,"\r\n");
strcat(buf,"MAIL FROM:<");
strcat(buf,from);
strcat(buf,">\r\n");
strcat(buf,"RCPT TO:<");
strcat(buf,to);
strcat(buf,">\r\n");
strcat(buf,"DATE\r\n");
strcat(buf,sub);
strcat(buf,"\r\n");
strcat(buf,body);
strcat(buf,"\r\n");
strcat(buf,"\r\n.\r\n");
strcat(buf,"RSET\r\n");
send(s,buf,strlen(buf),0);
recN = recv(s,buf,sizeof(buf),0);
for(i=0; i<recN; i++)
{
printf("%s",buf);
}
// ソケットの破棄
closesocket(s);
// クリーンアップ
WSACleanup();
-----------------------------------------------------------------
どこか間違ってますか?
メールは送れないし
最後の
for(i=0; i<reN; i++)
{
printf("%s",buf);
}
で受信文字列も見れないし・・・
わかる方ご教授お願いします。