Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Set an IMAP Mailbox Quota (SETQUOTA)
See more IMAP Examples
Demonstrates the Chilkat Imap.SetQuota method, which sends the IMAP SETQUOTA command. The first argument is the quota root, the second is the resource (STORAGE or MESSAGE), and the third is the limit. The server must support the IMAP QUOTA extension.
Background: Setting a quota is an administrative operation, so the logged-in account must have permission to change it. For the
STORAGE resource the limit is measured in units of 1024 octets, so a value of 500000 is roughly 500,000,000 bytes; MESSAGE instead caps the number of messages. Use GetQuotaRoot to read the current usage and limits back.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;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
imap: TImap;
quotaKb: Integer;
begin
success := False;
// Demonstrates the Imap.SetQuota method, which sends the IMAP SETQUOTA command. The 1st
// argument is the quota root, the 2nd is the resource ("STORAGE" or "MESSAGE"), and the 3rd is
// the limit. The server must support the IMAP QUOTA extension.
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;
// Set the STORAGE limit for the "Mailbox" quota root. STORAGE is measured in units of 1024
// octets, so 500000 is approximately 500,000,000 bytes.
quotaKb := 500000;
success := imap.SetQuota('Mailbox','STORAGE',quotaKb);
if (success = False) then
begin
WriteLn(imap.LastErrorText);
Exit;
end;
WriteLn('Quota set.');
success := imap.Disconnect();
if (success = False) then
begin
WriteLn(imap.LastErrorText);
Exit;
end;
imap.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.