コンポーネントを使わずにメール送信するには?

解決


Andropov  2003-05-08 16:23:53  No: 3505  IP: 192.*.*.*

今、メール送信用のDLLを作成しています。
DLLでフォームを使うことができないため、TSMTPコンポーネントを使うことはできません。
コンポーネントを使用しないでメールを送信する方法がありましたら教えていただけますか。

使用OS:Windows2000 使用Delphi:Delphi Ver6.0

編集 削除
えび  2003-05-08 16:52:34  No: 3506  IP: 192.*.*.*

フォームにコンポーネントを配置しなくてもコンポーネントは作成できます。
TSMTPでのDLLはやってないので保証できませんが、コンソールアプリでTNMHTTPを使った簡易ブラウザを作ったことはあります。

オブジェクト := TNMSMTP.create(nil);;

でいけるはずです。

どうしてもコンポーネントを使いたくなければWinSockを使えば出来るはずです。

編集 削除
Andropov  2003-05-08 17:51:08  No: 3507  IP: 192.*.*.*

送信できるようになりました。
ありがとうございました。

編集 削除
Andropov  2003-09-11 15:47:51  No: 3508  IP: 192.*.*.*

たびたびすみません。
メール送信はできるようになりましたが、DLLでは
イベントを取得することができませんでした。
イベントを取得する方法はありますか?

編集 削除
えび  2003-09-11 22:00:54  No: 3509  IP: 192.*.*.*

イベントをトラップするクラスを作れば良いと思います。
例えばTSMTPのOnConnectの処理を定義するとして。

TEventTrap = class
private
  procedure OnTrapConnect(Sender: TObject);  //トラップしたいイベントと同じ型のメソッドを定義
end;

procedure TEventTrap.OnTrapConnect(Sender: TObject);
begin
  //処理を書く
end;

そして、SMTPオブジェクトにメソッドポインタを割り当てる
var
  SmtpRef :TNMSMTP;
  EventRef :TEventTrap;
begin
  SmtpRef := TNMSMTP.Create(nil);
  EventRef := TEventTrap.Create;

  SmtpRef.OnConnect := EventRef.OnTrapConnect;


これで該当の処理が実行されます、こういう意味で良いでしょうか?

編集 削除