使用Outlook和Delphi从特定帐户发送电子邮件
当我使用Outlook自动发送来自Delphi的电子邮件时,我需要能够使用特定的发件人地址。 我有现在运行的代码,但它使用Outlook中的默认帐户,我需要能够指定另一个。 这怎么办?使用Outlook和Delphi从特定帐户发送电子邮件
我已经在VBA中完成了它,所以它在Delphi中也应该是可行的。
你的问题很可能是枚举/索引帐户集合,这从Delphi中稍稍不方便,那么你在VBA中习惯什么。
我会在下面发布一些示例代码。为了简洁和可读性,我使用了OleVariants,并在本地声明了olMailItem。在生产代码中,请确保使用早期绑定。
此外,当自动化它时,Outlook会抛出所有安全警告。
const
olMailItem = 0;
var
application: OleVariant;
mailItem: OleVariant;
begin
application := getActiveOleObject('Outlook.Application');
mailItem := application.createItem(olMailItem);
mailItem.recipients.add('[email protected]');
mailItem.subject := 'This is a subject';
mailItem.body := 'StackOverflow... the best time to hang out at christmas.';
// This line allows you to pick any account by name
mailItem.sendUsingAccount := application.session.accounts.item('some account');
mailItem.send;
end;
结果:='变异操作无效' – OZ8HP 2011-12-25 11:39:22
在哪一行?调试器告诉你什么?您是否将帐户名称替换为实际存在的帐户名称? Outlook运行时是否开始?你正在运行Outlook 2007+吗?如果您需要帮助,请提供更多信息。我发布的代码是微不足道的,并且经过测试,所以请根据您没有告诉我们重要事项的假设开展工作。 – 2011-12-25 22:35:07
由于一些奇怪的原因,代码 如果Outlook.Session.Accounts.Item(i)= aSender然后 是此错误的提供者 我将其更改为 AccountCurrent:= Outlook.Session.Accounts.Item(i); 如果AccountCurrent = aSender然后 其中AccountCurrent是一个字符串 我听起来很奇怪,但它是唯一我已经改变,现在的代码工作。 需要检查以确保选择了有效的帐户 - 否则我会得到另一个错误。 – OZ8HP 2011-12-26 14:11:40
如果你有它在VBA中工作,那么你知道你需要做什么,并离开了你的Delphi实现东西。可能使用您要使用的特定帐户的电子邮件/用户和/或密码登录到MAPI名称空间的位置。没有一些代码(最好是VBA和Delphi),我们都在这里黑暗中刺中。 – 2011-12-23 20:02:19