2016-10-26 2 views
0

Ich kann eine E-Mail erstellen und mit meinem Skript anzeigen, aber aus irgendeinem Grund wird nicht gesendet und ich erhalte den folgenden Fehler. Fehle ich etwas, vielleicht gibt es ein Erlaubnisproblem?Senden von Outlook E-Mail über Powershell nicht möglich

Exception calling "Send" with "0" argument(s): "Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT))"At C:\TEMP\Scripts\PowerShell\Outlook EMail Creation\TestEMailSend.ps1:27 char:5 
+  $mail.Send() 
+  ~~~~~~~~~~~~ 
+ CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
+ FullyQualifiedErrorId : ComMethodTargetInvocation 

Mein Code:

$global:UserReportsToEmail = "[email protected]" 
$ol = New-Object -comObject Outlook.Application 
$mail = $ol.CreateItem(0) 
$mail.To = "$global:UserReportsToEmail" 
$mail.cc = "[email protected]" 
$mail.Subject = "mySubject" 
$mail.HTMLBody = 
"<font color ='blue'><b>TESTING STUFFFF!</b></font><br> 
Text on a new line $UserID" 

$mail.Send() 
$inspector = $mail.GetInspector 
$inspector.Display() 
+0

Ich habe gerade Ihren Code getestet und es funktioniert für mich, welche Powershell-Version verwenden Sie? – Mansuro

+0

Ich bin auf Version 4. – MrMr

Antwort

0

Sie die Send-MailMessage Cmdlets verwenden können: https://technet.microsoft.com/en-us/library/hh849925.aspx

dann, wenn ich mehr Kontrollen brauchen und entsorgen functionnality i System.Net.Mail.SmtpClient verwenden

try 
    { 
     $emailCredentials = Import-Clixml "C:\testMail\credentials.clixml" 
     $recipients = @("[email protected]", "[email protected]", "[email protected]") 
     $attachments = @("C:\testMail\file.txt", ""C:\testMail\file2.txt", "C:\testMail\file3.txt") 

     # create mail and server objects 
     $message = New-Object -TypeName System.Net.Mail.MailMessage 
     $smtp = New-Object -TypeName System.Net.Mail.SmtpClient($buildInfoData.BuildReports.Mail.Server) 

     # build message 
     $recipients | % { $message.To.Add($_) } 
     $message.Subject = $subject 
     $message.From = New-Object System.Net.Mail.MailAddress($emailCredentials.UserName) 
     $message.Body = $mailHtml 
     $message.IsBodyHtml = $true 
     $attachments | % { $message.Attachments.Add($(New-Object System.Net.Mail.Attachment $_)) } 

     # build SMTP server 
     $smtp = New-Object -TypeName System.Net.Mail.SmtpClient(smtp.googlemail.com) 
     $smtp.Port = 572 
     $smtp.Credentials = [System.Net.ICredentialsByHost]$emailCredentials 
     $smtp.EnableSsl = $true 

     # send message 
     $smtp.Send($message) 

     Write-Host "Email message sent" 
    } 
    catch 
    { 
     Write-Warning "$($_.Exception | Select Message, Source, ErrorCode, InnerException, StackTrace | Format-List | Out-String)" 
    } 
    finally 
    { 
     Write-Verbose "Disposing Smtp Object" 
     $message.Dispose() 
     $smtp.Dispose() 
    } 
+0

Das ist gut zu wissen, aber leider ist es keine Option für mich. – MrMr

+0

manchmal haben Sie keine Berechtigung als stmp-Server, aber Zugriff auf Outlook – Alexan

+0

können Sie nicht senden Mail-Nachricht oder .net SMTP-Objekt? Warum ? – freakydinde

0

Laut ein paar der Microsoft-Seiten (zB https://social.msdn.microsoft.com/Forums/en-US/80c66a08-66ee-4ab6-b629-6b1e70143eb0/operation-aborted-exception-from-hresult-0x80004004-eabort-outlook-appointment?forum=outlookdev) Dies ist auf 'Objektmodellschutz' zurückzuführen. Eine Sicherheitsfunktion, die verhindert, dass automatisierte Programme Viren oder ähnliches aus dem Hintergrund per E-Mail versenden.

Sie haben das wahrscheinlich schon ausgearbeitet. Das hier zu veröffentlichen, damit andere wie ich schneller und leichter verstehen können, warum es nicht funktioniert.

Verwandte Themen