D2007, Indy10で下記のページを参考にして、サービスとして動作するメール送信プログラムを作ろうとしています。
http://codezine.jp/a/articleprint.aspx?aid=400
このページにあるサンプルは、OpenSSLのモジュールとjconvert.pasを入れるとそのままコンパイルされ、gmailなどのSMTP認証を通って送信できるのですが、
自前のコードで同じコンポーネントを貼ってプロパティも同じにしても、IOHandlerのセット部分でアドレスの読み込み違反が発生してしまいます。
エラー発生箇所
SMTP.IOHandler := SSLIOHandler;
OpenSSLのlibeay32.dllとssleay32.dllもexeと同じフォルダに入っています。
サンプルと違う所が見つからないので困っているのですが、なにか解決策はないでしょうか?
会員ページなので見てませんが、
gMailでチェックしました。
Indy10です。
IdSMTP.IOHandlerの行が変な所にあるんでないですか?
ちなみに、IdSMTPのSSLは初めてなので、
これであってるか知りません。(gMailはSSL使わなくても通るっぽいす)
一応動いているっぽいです。
IdSSLOpenSSL, IdSMTP, IdSSL, IdIOHandlerStack,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase;
procedure TForm1.Button1Click(Sender: TObject);
var
IdSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
IdSMTP: TIdSMTP;
MailHStack : TIdIOHandlerStack ;
host, subject, mailto, from, body:String;
begin
IdSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdSSLIOHandler.ConnectTimeOut := 5000;
IdSMTP := TIdSMTP.Create(nil);
IdSMTP.IOHandler := IdSSLIOHandler;
IdSMTP.Port := 465;
IdSMTP.UseTLS := utUseExplicitTLS;
IdSMTP.AuthType := atSASL;
IdSMTP.UseEhlo := True;
IdSMTP.Host := 'smtp.gmail.com';
IdSMTP.Username :='xxxxxx@gmail.com';
IdSMTP.Password :='xxxxxx';
host := 'smtp.gmail.com';
subject := 'SSL test';
mailto := 'xxx@xxx.xx.xx';
from := 'xxxxx@gmail.com.';
body := 'mail body';
IdSMTP.QuickSend(host, subject, mailto, from, body);
IdSMTP.Free;
IdSSLIOHandler.Free;
end;
余談ですが、さっきまでパスワードを入れていたコードをコピペ投稿するのは勇気が要りますね…
このBBS削除機能無いし。
もにゃさんレス有難う御座いました。
お返事が遅れてしまいましたが、結局の所はSSL部分が実装できませんでしたが
とりあえずはSSLなしのSMTP認証だけ必要でよかった為、
今回の件はクローズします。有難う御座いました。
解決チェック忘れです^_^;
編集 削除