Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Send a Raw IMAP Command (Binary)
See more IMAP Examples
Demonstrates the Chilkat Imap.RawCommandBd method, which sends raw IMAP command bytes and receives the raw response bytes. The first argument is a BinData holding the command — without an IMAP tag or trailing CRLF, which Chilkat supplies — and the second is a BinData that receives the response.
Background: This is an escape hatch for rare server extensions the API does not otherwise expose. It is intended for commands with a single-line response that do not change
Imap object state such as the selected mailbox or message count. For everyday operations, use the dedicated methods, which parse responses and maintain object state for you.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Imap,
Chilkat.BinData;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
imap: TImap;
bdCmd: TBinData;
bdResp: TBinData;
respStr: string;
begin
success := False;
// Demonstrates the Imap.RawCommandBd method, which sends raw IMAP command bytes and receives
// the raw response bytes. The 1st argument is a BinData containing the command (without a tag
// or trailing CRLF -- Chilkat supplies both), and the 2nd is a BinData that receives the
// response.
imap := TImap.Create;
imap.Ssl := True;
imap.Port := 993;
success := imap.Connect('imap.example.com');
if (success = False) then
begin
WriteLn(imap.LastErrorText);
Exit;
end;
success := imap.Login('user@example.com','myPassword');
if (success = False) then
begin
WriteLn(imap.LastErrorText);
Exit;
end;
// Build the raw command. Do not include an IMAP tag or a trailing CRLF.
bdCmd := TBinData.Create;
bdCmd.AppendString('CAPABILITY','utf-8');
bdResp := TBinData.Create;
success := imap.RawCommandBd(bdCmd,bdResp);
if (success = False) then
begin
WriteLn(imap.LastErrorText);
Exit;
end;
// Interpret the response bytes as a UTF-8 string.
respStr := bdResp.GetString('utf-8');
WriteLn(respStr);
success := imap.Disconnect();
if (success = False) then
begin
WriteLn(imap.LastErrorText);
Exit;
end;
imap.Free;
bdCmd.Free;
bdResp.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.