2011-12-23 168 views
1

當我使用Outlook自動發送來自Delphi的電子郵件時,我需要能夠使用特定的發件人地址。 我有現在運行的代碼,但它使用Outlook中的默認帳戶,我需要能夠指定另一個。 這怎麼辦?使用Outlook和Delphi從特定帳戶發送電子郵件

我已經在VBA中完成了它,所以它在Delphi中也應該是可行的。

+3

如果你有它在VBA中工作,那麼你知道你需要做什麼,並離開了你的Delphi實現東西。可能使用您要使用的特定帳戶的電子郵件/用戶和/或密碼登錄到MAPI名稱空間的位置。沒有一些代碼(最好是VBA和Delphi),我們都在這裏黑暗中刺中。 – 2011-12-23 20:02:19

回答

0

你的問題很可能是枚舉/索引帳戶集合,這從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; 
+0

結果:='變異操作無效' – OZ8HP 2011-12-25 11:39:22

+1

在哪一行?調試器告訴你什麼?您是否將帳戶名稱替換爲實際存在的帳戶名稱? Outlook運行時是否開始?你正在運行Outlook 2007+嗎?如果您需要幫助,請提供更多信息。我發佈的代碼是微不足道的,並且經過測試,所以請根據您沒有告訴我們重要事項的假設開展工作。 – 2011-12-25 22:35:07

+0

由於一些奇怪的原因,代碼 如果Outlook.Session.Accounts.Item(i)= aSender然後 是此錯誤的提供者 我將其更改爲 AccountCurrent:= Outlook.Session.Accounts.Item(i); 如果AccountCurrent = aSender然後 其中AccountCurrent是一個字符串 我聽起來很奇怪,但它是唯一我已經改變,現在的代碼工作。 需要檢查以確保選擇了有效的帳戶 - 否則我會得到另一個錯誤。 – OZ8HP 2011-12-26 14:11:40

相關問題