我目前有以下代码:
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;
但是,Outlook会提示您允许永久性电子邮件延迟5秒。在循环之后发送,覆盖相同的MailItem。
MailItem.Save;
将所有项目保存到草稿而不提示。这不是一个糟糕的解决方案,可能是一个额外的功能,但需要更多的用户输入才能将项目移动到发件箱。
是否有将每个邮件发送到发件箱的功能?或者我应该考虑创建所有电子邮件地址的字符串,例如
MailItem.MsgTo := "example@email.com; example2@email.com"
由于
答案 0 :(得分:3)
使用Outlook时,您可以考虑使用Outlook兑换1,这样您就可以绕过安全提示并直接从您的代码发送邮件。
答案 1 :(得分:1)
然后你唯一的选择就是Redemption在幕后做的事情 - 使用扩展MAPI。
答案 2 :(得分:0)
这是适用于我的代码:
Outlook := CreateOleObject ('Outlook.Application');
// Repet the code below for each mail:
OutlookMail := Outlook.CreateItem (olMailItem); // olMailItem = 0;
OutlookMail.Recipients.Add ('example@email.com').Resolve;
OutlookMail.Recipients.Add ('example2@email.com').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;