'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 := "[email protected]; [email protected]"

Thanks



Solution 1:[1]

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.

Solution 2:[2]

Then your only option is to do what Redemption (I am its author) is doing under the hood - use Extended MAPI.

Solution 3:[3]

This is the code which works fine for me:

Outlook := CreateOleObject ('Outlook.Application');

    // Repet the code below for each mail:
    OutlookMail := Outlook.CreateItem (olMailItem);  // olMailItem = 0;
    OutlookMail.Recipients.Add ('[email protected]').Resolve;
    OutlookMail.Recipients.Add ('[email protected]').Resolve;
    OutlookMail.Subject := Form48.Edit3.Text;
    OutlookMail.Body := Form48.Memo1.Text;
    OutlookMail.BodyFormat := olFormatHTML;
    // OutlookMail.SendUsingAccount := OutlookAccount;  // If you need to select the acount
    OutlookMail.Send;

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tobias R
Solution 2
Solution 3 adlabac