メールを送信するプログラム作っており、ビルドして実行したんですが、メールの送信ボタンを押すと「Socket Error #11004」が出ます。SMTPサーバの欄に入力するとこのようなエラーメッセージがでます。Delphiを始めたばかりでいろんなサイトを見ているのですが、どれも詳しく説明しているものがなくうまくいきません。
コードは以下のような感じなのですが、何か他に設定が必要なのでしょうか?できれば、Delphiでのメールの送信について詳しく書かれたサイトをご存知の方がおられれば、そのサイトや書籍を教えていただきたいです。
どなたか回答お願いいたします。
procedure TfrmSendMail.btnSend1Click(Sender: TObject);
var
host, subject, mailto, from, body: string;
begin
host := edtHost.Text ;
subject := jconvert.CreateHeaderString(edtSubject.Text) ;
mailto := edtToMail.Text ;
from := jconvert.CreateHeaderString(edtFromName.Text);
body := jconvert.ConvertJCode(memBody.Text, JIS_OUT);
IdSmtp.QuickSend(host, subject, mailto, from, body);
ShowMessage('メール送信を終わりました。');
end;
IdSMTPのUsername・Passwordプロパティは設定されてますか?
IdSmtp.QuickSendのメール送信について
https://www.petitmonte.com/bbs/answers?question_id=5707
参考になれば・・・
自分の場合のコードです。
環境はDelphi7Pro WinXPです。
Indyは10に更新しています。
因みに自分も、ここの過去ログで実装出来ました^^。
IdMessage1を一つ配置します。
こちらでは、送信のみならjcoonvartは使用せずに送信できました。
文字化けするとの過去ログもあったので、何ともいえませんが・・・
procedure TForm1.Button4Click(Sender: TObject);
var
subject, from, mailto, body: string;
msg: TIdMessage;
IdSMTP: TIdSMTP;
begin
//IdSMTPのプロパティを設定しておく
IdSMTP := TIdSMTP.Create(nil);
IdSMTP.Port := 587;
IdSMTP.Host := 'smtpアドレス';
IdSMTP.Username := 'ユーザー名';
IdSMTP.Password := 'パスワード';
subject := 'タイトル';
from := '送信元アドレス';
mailto := '送信先アドレス';
body := memo1.Lines.Text;
msg := TIdMessage.Create(IdSmtp);
try
msg.Subject := subject;
msg.Recipients.EMailAddresses := mailto;
msg.From.Text := from;
msg.Body.Text := body;
msg.ContentType := 'text/plain';
IdSmtp.Connect;
IdSmtp.Send(msg);
IdSmtp.Disconnect ;
finally
msg.Free;
end;
end;
もし、上記でもエラーメッセージが消えなければ・・・
Indyを10に変えてみてはどうですか?
自分も古いIndyではエラーメッセージが止まず、
Indyを10に変えてみたら正常に動くようになりました。
Indy10をインストールするには?
https://www.petitmonte.com/bbs/answers?question_id=6580