ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3974958 Exchangeを使用したメール送信について
質問者:sh_yasuaki いつも拝見させていただいております。
さっそくですが、質問したいことがあります。

現在、pop before smtpにてメールを送信したいと考えております。

色々、調べてみたのですが、Cを勉強し始めて間もないのもありなかなかメールの送信がうまくいきません。
CDOを使用してメール送信を行う手順については調査してみたもののpop before smtpは使用できない旨が
ネット検索を行った際に記載してあり使用できないことは判明しております。

一般的に使用する手順等があるのかわかりませんが、上記pop before smtpを実現する方法がありましたら
ご教授お願いします。
参考になるURLでも何でも結構ですのでよろしくお願い致します。

(外部DLLを使用しない形で対応したいと考えております。
basp21ではできるようなことは検索した際に発見しましたが、できれば避けたいと考えております。)
困り度:
  • すぐに回答を!
質問投稿日時:
08/04/25 14:32
この質問に対する回答は締め切られました。

回答

ANo.2 >CDOを使用して何度か送信を試みたのですが、smtpサーバ名が何を指定したらよいかよく分かりません。

プロバイダと契約した時に、メールアドレスを1つ貰えた筈です。その際に「POPサーバー名」「SMTPサーバー名」「POPユーザーアカウント」「POPパスワード」など、メールに関する「接続情報」の書類を受け取った筈です。

そこに書いてある「SMTPサーバー名」を指定します。

「メルアドはフリーで取得したWEBメールしかない」「メルアドは持ってない」としたら「貴方が自由に利用できるSMTPサーバーは無い」ので、メール送信は諦めて下さい。

>重ね重ね質問をしてしまって申し訳ありませんが、Exchangeサーバへの接続の際は

「Exchangeサーバ」は、マイクロソフト独自のプロトコルとサービスを用いた「Windowsの世界ででしか通じない、popやsmtpとは直接には無関係の、別世界のシロモノ」なので「Exchangeサーバを介してメールを送受信する」には「Exchangeサーバ専用のDLLとコンポーネントが必要」です。

「Exchangeサーバを介してメールを送受信する」と、何が起こるかと言うと「Exchangeサーバ自信が、ユーザーの代わりにpopサーバーとsmtpサーバーに接続してメールを送受信して、受け取ったメールはExchangeサーバに溜まり、ユーザーは独自のプロトコルとサービスを用いて、Exchangeサーバに溜まったメールを受け取る」のです。

「Exchangeサーバはマイクロソフト独自の異世界の物」なので、このサーバーと接続するプログラムを書くには「マイクロソフトが開発者向けに高額で提供しているデベロッパーキットに入っているコンポーネントが必要」です。

メール送受信の世界標準のプロトコルはsmtpとpop3です。なので、今すぐ「Exchangeサーバの事は忘れ去り」ましょう。Exchangeサーバの知識は習得しても何の役にも立ちません。
回答者:chie65536
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/04/25 16:58
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答20pt

ANo.1 >CDOを使用してメール送信を行う手順については調査してみたもののpop before smtpは使用できない旨がネット検索を行った際に記載してあり使用できないことは判明しております。

pop before smtpとは「smtpサーバーに接続する前に、popサーバーに接続してユーザー認証をしなさい」と言う仕掛けです。

pop before smtpでの送信手順は、以下のようになります。

1.POPサーバーに接続する(ポート110でtelnet接続する)
2.POPサーバーにUSERコマンドでログインアカウントを送る
3.POPサーバーにPASSコマンドでログインパスワードを送る
4.ログインメッセージが返って来たらQUITコマンドで接続を切る
5.SMTPサーバーに接続する(ポート25でtelnet接続する)
6.SMTPサーバーにHELOコマンドで、先ほどPOPしたホストと同一である事を明示する
7.SMTPサーバーにMAIL FROM:コマンドで自己アドレスを指示する
8.SMTPサーバーにRCPT TO:コマンドで宛先アドレスを指示する
9.SMTPサーバーにDATAコマンドでメールのヘッダと本文を送る
10.QUITコマンドでSMTPサーバーとの接続を切る

このうち、5〜10は、CDOなどの既存の送信コンポーネントで実現できます。

また、1〜4も、既存の受信コンポーネントで「メールの受信は行わず、サーバ上のリストを取得するだけ」などの処理で代替できます。

つまり「メール受信コンポーネントと、メール送信コンポーネントを用意すれば良いだけ」なのです。そして、受信と送信を連続して行えば良いだけなのです。
回答者:chie65536
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/04/25 16:07
この回答へのお礼回答ありがとうございます。
なるほど。一括した処理というわけではないのですね。

CDOを使用して何度か送信を試みたのですが、smtpサーバ名が何を指定したらよいかよく分かりません。
(簡単なvbsにて送信を行いましたがエラーになってしまって送信できませんでした。smtpサーバ名は
Exchangeサーバを入力して実行)

重ね重ね質問をしてしまって申し訳ありませんが、Exchangeサーバへの接続の際はsmtpサーバ名はoutlook等の
設定に表示されている箇所が存在するのでしょうか?
Exchangeサーバ名を設定するだけでsmtpサーバ名等を指定することがなかったので。。。
(上記からわかるかと思われますが、Exchangeサーバについても勉強不足のため、
仕組みがどうなっているのかよくわかっていません)