當我使用Outlook自動發送來自Delphi的電子郵件時,我需要能夠使用特定的發件人地址。 我有現在運行的代碼,但它使用Outlook中的默認帳戶,我需要能夠指定另一個。 這怎麼辦?使用Outlook和Delphi從特定帳戶發送電子郵件
我已經在VBA中完成了它,所以它在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