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

解決


Andropov  2003-05-09 01:23:53  No: 3505  IP: [192.*.*.*]

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

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

編集    削除
えび  2003-05-09 01:52:34  No: 3506  IP: [192.*.*.*]

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

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

でいけるはずです。

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

編集    削除
Andropov  2003-05-09 02:51:08  No: 3507  IP: [192.*.*.*]

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

編集    削除
Andropov  2003-09-12 00:47:51  No: 3508  IP: [192.*.*.*]

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

編集    削除
えび  2003-09-12 07: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;


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

編集    削除