2015-04-01 94 views
1

我使用powershell從Outlook發送電子郵件(完成自動過程)。這適用於默認郵箱。我在開發網絡中有很多限制,不能使用Outlook和PowerShell以外的任何軟件。使用powershell發送電子郵件與不同發件人地址

我的問題是:是否有一種方法可以使用powershell (在我的Outlook中有三個帳戶A,B和C)在Outlook中從其他帳戶發送電子郵件,即使我有一個預定義的帳戶。

我使用的代碼是這樣的。

$o = New-Object -com Outlook.Application 
$mail = $o.CreateItem(0) 
$mail.importance = 2 
$mail.subject = "SUBJECT" 
$mail.body = "BODY" 
$mail.To = "[email protected];" 
$mail.Send() 

有一個屬性我可以設置讓電子郵件的起源是B或C,而不是預定A.

+0

澄清了問題,並添加了相應的標籤 – SeanC 2015-04-01 21:21:15

+0

您可以設置「答覆」遞送選項。但除非Outlook已爲其他帳戶配置了委派權限,否則任何其他選項都將無法使用。 – jessehouwing 2015-04-01 21:31:22

+0

我真的很建議看看EWS,它只是一個必須隨PowerShell腳本提供的DLL。由於所有惡意軟件都是在2000年初編寫的,如果該功能可以傳播垃圾郵件,病毒和竊取整個地址簿,則自動化腳本的自動化功能非常有限。 – jessehouwing 2015-04-01 21:32:39

回答

1

您需要設置的MailItem類,允許設置的SendUsingAccount財產一個Account對象,表示MailItem將要發送到的帳戶。例如:

Sub SendUsingAccount() 
Dim oAccount As Outlook.account 
For Each oAccount In Application.Session.Accounts 
    If oAccount.AccountType = olPop3 Then 
    Dim oMail As Outlook.MailItem 
    Set oMail = Application.CreateItem(olMailItem) 
    oMail.Subject = "Sent using POP3 Account" 
    oMail.Recipients.Add ("[email protected]") 
    oMail.Recipients.ResolveAll 
    oMail.SendUsingAccount = oAccount 
    oMail.Send 
    End If 
Next 
End Sub 

要知道,微軟目前並不提倡,不支持的Microsoft Office應用程序,自動化任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM,和NT服務),因爲Office在此環境中運行時可能會出現不穩定的行爲和/或死鎖。

如果您正在構建一個在服務器端上下文中運行的解決方案,則應該嘗試使用對於無人執行安全的組件。或者,您應該嘗試找到允許至少部分代碼運行客戶端的替代方案。如果您從服務器端解決方案使用Office應用程序,則該應用程序將缺少成功運行所需的許多必要功能。此外,您將面臨整體解決方案穩定性的風險。請閱讀Considerations for server-side Automation of Office文章中的更多內容。

相關問題