2012-02-16 32 views
3

このコードを使用して、delphi indyからテストメッセージをメールします。 私はTidSMTP、TIdMessageおよびIdSSLIOHandlerSocketOpenSSLを持っています。 beloweコードでDelphi Indy 10 Smtpエラー "現在認証できません"

私は、SSLでGmailを使用するように設定した場合、それは正常に動作します、しかし、すぐに私は私のcPanelのメールサーバのdetialsと私のサーバーの詳細を交換するとして、それがエラーを動作しません。

" unable to authenticate at present".

Outlook 2007で自分のアカウントをセットアップするのと同じ詳細を使用しました。コードは

IdSSLIOHandlerSocketOpenSSLの詳細です。

method := sslvsslv3 
mode := sslmUnassigned 

//rest default values 

procedure Tfrmnotification.btnSendClick(Sender: TObject); 
var 
    IdMsg : TIdMessage; 
begin 

begin 
    IdMsg := TIdMessage.Create(nil); 
    try 
    with TIdSMTP.Create(nil) do 
    try 
    // UserName := '[email protected]'; 
    // Password := 'pass'; 
    // Host := 'smtp.gmail.com'; 
    // IOHandler := IdSSLIOHandlerSocketOpenSSL; 
    // Port := 587; 
     UserName := '[email protected]'; 
     Password := 'password'; 
     Host := 'outgoing server detials';// same as outlooks 
     IOHandler := IdSSLIOHandlerSocketOpenSSL; 
     Port := 465;// this is correct port 
     UseTLS:= utUseExplicitTLS; 


     IdMsg.Body.Add('test'); 
     IdMsg.Recipients.emailAddresses := '[email protected]'; 
     IdMsg.Subject := 'test'; 
     IdMsg.From.Address := '[email protected]'; 
     IdMsg.From.Name := 'john'; 


     Connect; 
     Send(IdMsg); 
     Disconnect; 
    finally 
     Free; 
    end; 
    finally 
    IdMsg.free; 
    end; 
    showmessage('done'); 
end; 

どのようなヘルプも魅力的です。

+0

したがって、通信しているサーバーは交換サーバーですか?だから、問題はExchangeとのSSL接続を作ることですか? Mozilla Thunderbird Emailクライアントで試してみるとうまくいくのですか?うまく動作しない場合は、サーバー側で正しく動作するように構成されていないコードを記述しようとしているのはなぜですか? –

+0

Hey Warren P.あなたの返事をありがとう。サーバーは交換サーバーではありません。私の前提は、Microsoft Office 2007からメールを送ることができれば、私は同じことを私のデルファイコードでもできるはずだということです。私は自分のコードやコンポーネントの属性で何かを見逃してしまったことを期待しています。 – Overklog

+0

それでは、Exchange以外の電子メールプログラムで試してみて、必要な認証設定を把握してください。 TLSなど –

答えて

3

ポート465は、SMTP over implicit SSLに使用されます。 UseTLSをutUseExplicitTLSに設定しました。正しい値が(最も可能性が高い)utUseImplicitTLSである必要があります。

+0

代わりに明示的なTLSを使用する場合は、 'Port'を587に設定するか、または25にしておきます(' UseTLS'プロパティがデフォルト値を含んでいる場合、 'Port'を更新します)。 –

+0

正しいですが、サーバーの所有者があなたに与える接続の詳細に注意することは明らかに非常に重要です。サーバーがポート465またはポート587でリッスンしない場合、明らかにこれらのポートで接続しようとすることはありません。 –

+0

「UseTLS'プロパティを設定すると、Portプロパティが以前に設定された内容に応じて、接続する前に 'Port'プロパティを暗黙的に更新するかどうかが決まります。私は、人々がその事実に注意を払い、彼らが期待しているのとは異なるポートに接続することを終わらせたケースを見ました。 –

関連する問題