SMTP-AUTH 334
いつも、ご指導いただき、感謝しております。
VS2005、Windows7、WindowsSocketを使ってメールソフトを作っています。
SMTP-AUTH
での、サーバーとのやり取りで、
AUTH PLAIN AH********A==
334
235 2.0.0 OK ******
のように、235の前に、334の応答があります。
送信しているデータでbase64変換したものはサンダーバードの送信しているデータと同じです。
Wireshark で見ています。
どんな理由で、334が帰ってくるのでしょうか?
教えていただければ幸いです。よろしくお願いします。
ソースコードは以下のようです。
デバッグの最中ですので、見苦しい点は勘弁してください。
sprintf( out_data, "EHLO %s\r\n",
(wanted_hostname==NULL) ? my_hostname : wanted_hostname);
if ( 0!=put_smtp_auth_line( SMTPSock, out_data, strlen (out_data) ) ) return(-1);
if ( get_smtp_auth_line() != 250 ) {//250-smtp...
smtp_error ("ESMTP server error 250");
return(-1);
}
char b64in[256]; char b64out[512];int np;
np=0;
b64in[np] = NULL;
np = np+1;
strcpy((char *)(b64in+np),oc_sender);
np = np + strlen(oc_sender);
b64in[np] = NULL;
np = np+1;
strcpy((char *)(b64in+np), oc_pop3password);
np = np+strlen(oc_pop3password);
b64in[np]=NULL;
//base64_encode(char *in, char *endin, char *out)
base64_encode(b64in, (b64in+np), (char *)b64out);
sprintf( out_data, "AUTH PLAIN %s\r\n",b64out);
if ( 0!=put_smtp_auth_line( SMTPSock, out_data, strlen (out_data) ) ) return(-1);
if ( get_smtp_auth_line() != 334 ) {//challenge value
smtp_error ("ESMTP server error");
return(-1);
}
if ( get_smtp_auth_line() != 235 ) {//OK Auth
smtp_error ("ESMTP server error");
return(-1);
}