先日「もにゃ」さんにIdSMTP.QuickSendでのメールの送信を教もらいました。
何度やってもうまかいかず、理由がサーバーの認証によるものと思います。
ご指導いただけませんか。
↓
[サーバーサイド]
メールソフトは、特に設定を変更しなければ、POP before SMTPでユーザー認証を行っています
POP before SMTP
メールの受信時にユーザー認証を行い、メールの送信を許可する方法。
※一回受信しないと送信できません。
SMTP-AUTH
メールの送信時にユーザー認証を行い、メールの送信を許可する方法
■SMTP-AUTHを利用するには(メールソフトの設定)
SMTP-AUTHを利用するには、メールソフトの設定を変更する必要があります。
>教えていただいたコード
procedure TForm1.Button1Click(Sender: TObject);
var
IdSMTP: TIdSMTP;
host, subject, mailto, from, body:String;
begin
IdSMTP := TIdSMTP.Create(nil);
IdSMTP.Port := 587;
IdSMTP.Host := 'smtp.gmail.com';
IdSMTP.Username :='xxxxx@gmail.com'; //ユーザー名
IdSMTP.Password :='xxxxxxx'; //パスワード
host := 'smtp.gmail.com';
subject := 'おういえー';
mailto := 'xxx@xxx.xxx'; //送り先
from := 'xxx@gmail.com'; //送り主
body := 'めーる本文';
IdSMTP.QuickSend(host, subject, mailto, from, body);
IdSMTP.Free;
end;
すいません、サーバーサイドではなくクライアントサイドの問題ですね。
yahooを使用しています。
メールソフトは、特に設定を変更しなければ、POP before SMTPでユーザー認証を行っています。
らしいです。
今、時間ないのでお答えできません
yahooってyahoo BBですかね?
yahoo BBです。
そんなには急いでいませんのでよろしければご指導下さい。
私もYahooBBです。
■SMTP-AUTHを利用
procedure TForm1.Button3Click(Sender: TObject);
var
IdSMTP: TIdSMTP;
host, subject, mailto, from, body:String;
begin
IdSMTP := TIdSMTP.Create(nil);
IdSMTP.Port := 587;
IdSMTP.Host := 'smtp.mail.yahoo.co.jp';
IdSMTP.AuthType := atSASL; //追加
IdSMTP.Username := 'xxxxxxxx'; //ユーザー名
IdSMTP.Password := 'xxxxxxxx'; //パスワード
host := 'smtp.mail.yahoo.co.jp';
subject := 'タイトル;
mailto := 'xxx@xxxx.xxxx'; //送り先
from := 'xxxxxxxx@yahoo.co.jp'; //送り主
body := 'メール本文';
IdSMTP.QuickSend(host, subject, mailto, from, body);
IdSMTP.Free;
end;
お答えありがとうございます。
IdSMTP.AuthType := atSASL; のところでエラーがでます。
Delphi7を使用していますがindyのバージョンを調べる方法がわかりません。
C:\Program Files\Borland\Delphi7\Source\Indyの変更箇所など
あるのでしょうか。
Indy9用(POP before SMTP)
日本語使うときはjconvertが必要だったはず。
procedure TForm1.Button1Click(Sender: TObject);
var
IdSMTP: TIdSMTP;
IdPOP3: TIdPOP3;
host, subject, mailto, from, body:String;
begin
IdPOP3 := TIdPOP3.Create(nil);
IdPOP3.Host := 'pop.mail.yahoo.co.jp';
IdPOP3.Username := 'xxxx'; //ユーザー名
IdPOP3.Password := 'xxxx'; //パスワード
IdPOP3.Connect;
IdPOP3.Free;
IdSMTP := TIdSMTP.Create(nil);
IdSMTP.Port := 587;
IdSMTP.Host := 'smtp.mail.yahoo.co.jp';
IdSMTP.Username := 'xxxx'; //ユーザー名
IdSMTP.Password := 'xxxx'; //パスワード
host := 'smtp.mail.yahoo.co.jp';
subject := 'test';
mailto := 'xxx@xxx.xxx'; //送り先
from := 'xxxx@yahoo.co.jp'; //送り主
body := 'メール本文';
IdSMTP.QuickSend(host, subject, mailto, from, body);
IdSMTP.Free;
end;
[もにゃ]様
最後までご丁寧に教えていただいて有難うございました。
おかげさまで、問題はクリアできました。
思えば、ご指導いただけなければ解決できなかったと思います。
私も早く[もにゃ]様レベルになりたいです。
どう学習していくか?難しいですね。
ツイート | ![]() |