SMTP,SSL認証をするには?

解決


panache  2009-10-15 21:30:45  No: 35918  IP: [192.*.*.*]

こんばんは。panacheです。
今HotmailやGmailでメールを送信するプログラムを作っているのですが、どうやらSMTP認証とSSL認証が必要ということがわかりました。

SMTP認証はTIdSASLLoginやTIdUserPassProviderを貼り付けてオブジェクトインスペクタを設定して、IdSMTP1.Connectをすればいいのでしょうか?


また、SSL認証の仕方も全くわかりません。
というのも今まで1度もDLLを使用したことが無いので使い方がわかりません。
とりあえずLibeay32.dllとssleay32.dllが必要ということでそれらのDLLをプロジェクトと同じフォルダにコピーしたのですが、他に何か宣言などが必要なのでしょうか?
また、SSLのDLLの場合、どのように(SMTPでいうオブジェクトインスペクタの設定)設定すればよいのでしょうか?こちらも何かConnectionのようなことを行うのですか?

どなたかご教授お願いします。

編集 削除
過去ログに  2009-10-20 15:42:39  No: 35919  IP: [192.*.*.*]

沢山同じ質問あるからぐぐるといいよ

編集 削除
panache  2009-10-21 22:19:13  No: 35920  IP: [192.*.*.*]

>過去ログにさん
大変申し訳ありません。
検索したら見つかりました。

しかし、それを参考にしてコードを書き直して実行してみたのですが、「Connection Closed Gracefully 」エラーが出て送信できません。
この例外が余分な例外ということも知っていますが、メールが送信されていないので何かしら引っかかってるのかと思います。

https://www.petitmonte.com/bbs/answers?question_id=6313
これを参考にコードを書き換えました。
-----
SMTP := TIdSMTP.Create(nil);
SMTP.Host := 'smtp.gmail.com';
SMTP.Port:=587;
SMTP.Username := '(username)@gmail.com'; // UserName
SMTP.Password:= '(pass)'; // Password

SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
SSL.Host := SMTP.Host;
SSL.Port := SMTP.Port;
SSL.Destination := SSL.Host + ':' + IntToStr(SSL.Port);
SMTP.IOHandler := SSL;
SMTP.UseTLS := utUseExplicitTLS;
SMTP.Connect;

showmessage('connect:suc');

SMTP.QuickSend('smtp.gmail.com', 'sub', '(to)', '(from)', 'test');

showmessage('send:suc');
-----

編集 削除
ソース参照  2009-10-21 23:31:08  No: 35921  IP: [192.*.*.*]

SSLでQuickSendは使えないよ。

編集 削除
panache  2009-10-23 00:30:51  No: 35922  IP: [192.*.*.*]

>ソース参照さん
ありがとうございます。
TIdMessageをjconvertを使って送信できました。

無事解決しました。
ありがとうございます。

編集 削除
panache  2009-10-23 00:31:25  No: 35923  IP: [192.*.*.*]

チェックし忘れです;;

編集 削除