メールが、送信先のメールサーバーに届くのはどういうことか?
コマンドプロンプトで、コマンドラインからメールを送ることで、どのような仕組みとなっているのかご案内します。
この方法を使うと、送信できない場合など、通信のどの部分がうまくいってないのか?がより分かりやすくなります。
コマンドプロンプトは、Windows の場合「スタート」ボタンから→プログラムとファイルの検索で「コマンドプロンプト」と打つと探せます。
>>コマンドプロンプトについて
>>Windows7でコマンドプロンプトを使う場合
コマンドラインでメール送信
[1]telnetを立ち上げる
コマンドプロンプトでtelnet 入力しEnter キーで確定します。
※確定は、以降全てEnter キーで行います。
telnet
[2]SMTPサーバーへ接続する
今回は、下記メールアカウントを利用します。
送信元:test@hetemel.net
送信先:example@heteml.jp
hetemel.netが使っているSMTPサーバー(mail51.heteml.jp)へ587ポートを指定して接続します。
※25ポートでもOKです。これは、メールソフトで入力する送信ポートと同じです。
open 接続先のメールサーバー 587
220のSMTPサービスコードが返ってきて、通信をする準備が完了したことが確認できました。
ここで応答がなければ、サーバーが正常な状態でない(メンテナンス中など)ことが分かります。
[3]SMTPサーバーへ「HELO」コマンドで応答を求める
helo 接続先のSMTPサーバー
250が応答コードとして返ってくれば成功です。
[4]送信元:test@hetemel.net にログイン
auth login と入力後、base64encodeしたメールアカウントとパスワードを入力します。
例)test@hetemel.net をエンコードしたものは dGVzdEBoZXRlbWVsLm5ldA== です。
情報を入力したら、Enterキーで確定し、235 Authentication successfulと表示されたらログイン成功です。
>>base64エンコードはこちらから
auth login
メールアカウントをエンコードしたもの
パスワードをエンコードしたもの
[5]「MAIL」と「RCPT」コマンドで、送信元と送信先のメールアドレスを送る
このコマンドで、サーバーへ送るのはメールアドレスだけです。250 Ok と表示されれば送信できています。
mail from:送信元メールアドレス
rcpt to:送信先メールアドレス
[6]「DATA」コマンドで、メールデータを送信
data の後の内容は全て送信される内容として扱われます。
なお、ここで送信元メールアドレスやメールタイトルは入力しなくても、メールは届きます。
data
Enterキー . (ピリオド)Enterキー で、内容を送信したら、250 Okが返ってくるか確認します。
[7]「QUIT」コマンドで、SMTPサーバーとの通信を切断
これで、セッションが終了しました。
メールが届いているか確認します。
このようにメールを送る際は、情報をまとめて送っているのではなく、メールアドレスや本文などの情報を分割して処理を行っています。
これは、メールソフト(メールクライアント)を使った場合でも、同様の処理です。
メールの送信が完了しない場合など、この方法をお試しください。