IdSmtp.QuickSendで認証方式の変更

解決


yun  2008-06-29 19:17:23  No: 31108

先日「もにゃ」さんに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;


yun  2008-06-29 19:22:27  No: 31109

すいません、サーバーサイドではなくクライアントサイドの問題ですね。

yahooを使用しています。
メールソフトは、特に設定を変更しなければ、POP before SMTPでユーザー認証を行っています。
らしいです。


もにゃ  2008-06-29 20:46:54  No: 31110

今、時間ないのでお答えできません
yahooってyahoo BBですかね?


yun  2008-06-29 21:23:03  No: 31111

yahoo BBです。
そんなには急いでいませんのでよろしければご指導下さい。


もにゃ  2008-06-30 01:57:21  No: 31112

私も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;


yun  2008-06-30 06:22:26  No: 31113

お答えありがとうございます。
 IdSMTP.AuthType  := atSASL; のところでエラーがでます。
Delphi7を使用していますがindyのバージョンを調べる方法がわかりません。
C:\Program Files\Borland\Delphi7\Source\Indyの変更箇所など
あるのでしょうか。


もにゃ  2008-06-30 08:07:30  No: 31114

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;


yun  2008-07-01 06:55:21  No: 31115

[もにゃ]様
最後までご丁寧に教えていただいて有難うございました。
おかげさまで、問題はクリアできました。
思えば、ご指導いただけなければ解決できなかったと思います。
私も早く[もにゃ]様レベルになりたいです。
どう学習していくか?難しいですね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加