Search code examples
delphiemailautomationoutlook

Outlook automation with Delphi - Queue


I currently have the following code:

  while not (sqlMailMergeData.Eof) do
  begin

  if sqlMailMergeData.FieldByName('Email').AsString <> '' then
  begin
  Inc(Count);
  {Connect to Outlook}
  MailItem := OpOutlook1.CreateMailItem;
  MailItem.MsgTo := sqlMailMergeData.FieldByName('Email').AsString;
  MailItem.Body := Form48.Memo1.Text;
  MailItem.Subject := Form48.Edit3.Text;
  MailItem.Send;
  end;

  Form34.sqlMailMergeData.next;
  end;

However Outlook prompts you to allow ever email with a delay of 5 seconds. Sending after the loop overwrite the same MailItem.

  MailItem.Save;

Saves all the items to draft without prompting. This is not a bad solution and could be an extra feature but requires more user input to move the items to outbox.

Is there a function to send each mail item to the outbox? or should I consider creating a string of all the email address e.g.

MailItem.MsgTo := "example@email.com; example2@email.com"

Thanks


Solution

  • When working with outlook, you might consider using outlook redemption1, this way you can bypass the security prompt and send the mail directly from your code.