gpt4 book ai didi

delphi - Outlook 通过 COM 使用用户设置发送邮件

转载 作者:行者123 更新时间:2023-12-01 19:15:20 25 4
gpt4 key购买 nike

我有一个工作应用程序,可以通过 COM 访问 Outlook 并发送、保存或显示我在此应用程序中创建的电子邮件。

我想要的是 Outlook 中帐户的所有设置也应用到我的邮件上,因此这意味着邮件类型(文本、html 或 Rich)、自定义字体、签名等。

这里是一个SSCCE(其余代码只是一些日志记录,表单只包含最必要的控件):

...
strict private
FOutlook: _Application;
...

procedure TMainForm.ShowMailDlg(aModal: Boolean);
var
mail: _MailItem;
begin
Connect();
mail := FOutlook.CreateItem(olMailItem) as _MailItem;
mail.Recipients.Add(Trim(EdTo.Text));
mail.CC := Trim(EdCc.Text);
mail.Subject := Trim(EdSubject.Text);
mail.Body := EmailText.Lines.Text;
mail.SendUsingAccount := GetAccountForEmailAddress(Trim(EdFrom.Text));
//mail.Attachments.Add('Path1', olByValue, 1, 'Caption1');
//mail.Attachments.Add('Path2', olByValue, 2, 'Caption2');
mail.Display(aModal);
end;

procedure TMainForm.Connect;
begin
FOutlook := CreateOleObject('Outlook.Application') as _Application;
end;

function TMainForm.GetAccountForEmailAddress(const aSmtp: string): _Account;
var
accounts: _Accounts;
account: _Account;
i: Integer;
begin
accounts := FOutlook.Session.Accounts;
for i := 1 to accounts.Count do begin
account := accounts.Item(i);
if LowerCase(account.SmtpAddress) = LowerCase(aSmtp) then begin
Result := account;
Exit;
end;
end;
raise Exception.Create('No Account with SMTP address ' + aSmtp + ' found!');
end;

如何让 MailItem 使用所选帐户中的所有格式选项?

最佳答案

我仍然没有找到真正的解决方案,但这里有一个解决方法。

诀窍是使用 CreateItemFromTemplate 方法,其中模板包含所有设置。显然,用户需要为此目的创建一个模板,但这是一次性操作,应该不会太难。

procedure TMainForm.DoMailAction(aAction: TMailAction);
var
mail: _MailItem;
folder: OleVariant;
begin
Connect();
folder := FOutlook.Session.GetDefaultFolder(olFolderDrafts);
mail := FOutlook.CreateItemFromTemplate('C:\\Users\\fkoch\\default.oft', folder) as _MailItem;
...

此外,只要用户在邮件对话框中手动发送 mailItem,所选文件夹“草稿”就会导致签名附加到邮件正文 (mail.display(False) )。通过 mail.send()mail.save() 直接处理时不会发生这种情况。

关于delphi - Outlook 通过 COM 使用用户设置发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com