RackSpace に接続して正常に動作する IMAP4 クライアントを使用していますが、クライアントは Amazon 仕事用メールに移行しています。
Amazon の公開された手順に従って:
IMAP クライアント アプリケーションに接続する 次の情報を提供することで、IMAP 互換のクライアント ソフトウェアを Amazon WorkMail に接続できます。 アカウントの種類 IMAP プロトコル IMAPS ポート 993 安全な接続が必要;SSL 着信ユーザー名 Amazon WorkMail アカウントに関連付けられた E メールアドレス 着信パスワード あなたのパスワード 受信サーバー メールボックスがある地域に一致するエンドポイント: • us-east-1 imap.mail.us-east-1.awsapps.com
私がコーディングした唯一の操作はIMAPClient.Connect();
「接続済み」のステータスを返しますが、その後プログラムがハングします。コンポーネント ソースのスレッドをたどったところ、関数内で Amazon からの戻りを待っていることがわかりましTIdIMAP4.GetResponse: string;
た。非常に長い間そこでハングし、「正常に接続が閉じられました」例外がスローされます。
デルフィ 10.2
インディ 10.6.2.5366
私は何が欠けていますか?
私の設定は次のとおりです。
var
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
with IMAPClient do
begin
Name := 'IMAPClient';
OnStatus := IMAPClientStatus;
IOHandler := IdSSLIOHandlerSocketOpenSSL1;
OnDisconnected := IMAPClientDisconnected;
OnConnected := IMAPClientConnected;
Password := 'EmailTest1236';
Port := 993;
Username := 'emailTest.1236@foo.bar.com';
Host := 'imap.mail.us-east-1.awsapps.com';
UseTLS := utUseRequireTLS;
SASLMechanisms := <>;
MilliSecsToWaitToClearBuffer := 10;
end;
IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
with IdSSLIOHandlerSocketOpenSSL1 do
begin
Name := 'IdSSLIOHandlerSocketOpenSSL1';
OnStatus := IdSSLIOHandlerSocketOpenSSL1Status;
Destination := 'imap.mail.us-east-1.awsapps.com:993';
Host := 'imap.mail.us-east-1.awsapps.com';
MaxLineAction := maException;
Port := 993;
BoundPort := 993;
DefaultPort := 0;
end;
メールアカウントとパスワードは偽物です。本物は出せません。
unit uMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdIOHandler, IdIOHandlerSocket,
IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
IdIMAP4, Vcl.StdCtrls;
type
TForm4 = class(TForm)
IMAPClient: TIdIMAP4;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure IMAPClientStatus(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
IMAPClient.Connect();
end;
procedure TForm4.IMAPClientStatus(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
begin
memo1.Lines.Add(AStatusText);
end;
end.