いつも、ご指導いただき、感謝しております。
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);
}
No.1ベストアンサー
- 回答日時:
AUTHコマンドに対する応答の一つです。
AUTHはチャレンジを送るための応答と認証したあとの応答の2つの応答を返します。AUTH PLAIN AH***A==と全部くっつけてしまっていますが、本来の流れはこうです。
C: AUTH PLAIN
S: 334
C: AH********A==
S: 235 2.7.0 Authentication successful
PLAINだとわかりにくいですが、AUTH CRAM-MD5などを送ると334とともにチャレンジを送ってくれるのでなんのためにあるかわかりやすいです。
334 PDQxOTI5NDIzNDEuMTI4Mjg0NzJAc291cmNlZm91ci5hbmRyZXcuY211LmVkdT4=
詳しくはRFC4954を見てください。
http://tools.ietf.org/html/rfc4954
この回答への補足
C: AUTH PLAIN
S: 334
C: AH********A==
とすると、
S: 235 2.7.0 Authentication successful
ではなくて、500番台のエラーメッセージが帰ってきます。
なぞです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- システム メール送信について、ドメイン「@liam.co.jp」でメールを送信します。 ネットワークaにあるA 2 2022/05/31 15:47
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP php エラー 2 2022/10/23 16:43
- 数学 『完全<困難』 2 2022/11/28 06:36
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- その他(プログラミング・Web制作) このpythonコードの意味教えて下さい! 2 2022/08/26 00:52
- 統計学 統計学 二項分布の正規近似について 2 2023/02/10 11:58
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
間接参照のレベルが異なっています
-
for文 アスタリスクで形を作る
-
Win32APIでのエディットボック...
-
wParam
-
c++ 文字列を入力して、一文字...
-
new
-
文字列から空白を取り除きたい...
-
c言語strchrのキャスト...
-
char型配列について
-
OpenCVで32bit ヘッダ無しRaw画...
-
入力された文字列から整数だけ...
-
バイナリファイルをコピーする...
-
char型の比較
-
DPマッチング
-
c#でbmp画像の上下反転
-
double型の値をchar配列に変換...
-
main の引数には const 付けた方が
-
文字列
-
PING JPEGファイルのExif規格の...
-
プログラミングで以下の実行結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語の入力した文字を反転させ...
-
'const char *' 型は 'char *' ...
-
配列をnビットシフトする
-
str系関数を使わずに二つの文字...
-
int main()の・・・
-
atoi( ) の反対をやりたい
-
c++ 文字列を入力して、一文字...
-
CStringをwchar_tに変換したい
-
switch文で文字を比較すること...
-
干支のプログラム
-
絶対パスからのファイル名の切...
-
3桁区切(コンマ)記号をつけ...
-
間接操作のレベルとは
-
間接参照のレベルが異なっています
-
【C言語】文字型と整数型の違い
おすすめ情報