Email Versenden mit Powershell

  • Hallo,


    ich möchte mit Powershell ein EMail über den David Server verschicken. Dieser Mail sollte aber im Ausgangsverzeichnis des Versenders erscheinen.
    Leider krieg ich es nicht hin, dass die Testmails im Ausgangsverzeichnis landen ;(?( .
    Hab ihr ein Tipp für mich :?:


    Hier ist ein Test Code:
    $smtp = New-Object System.Net.Mail.SmtpClient
    $MailMessage = New-Object system.net.mail.mailmessage
    $smtp.Host = "<hostname>"
    $MailMessage.From = "<from email>"
    $MailMessage.To.Add("<to email>")
    $MailMessage.Body = ' @@MAIL@@
    @@NUMMER <email>@@
    @@VON <email>@@
    @@AN <email>@@
    @@BETREFF Test@@
    @@OWN <username>@@
    <!DOCTYPE html>
    <html lang="de">
    <meta charset=\"utf-8\">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <head>
    <title>
    Send email via David
    </title>
    </head>
    <body>
    <div id="message_body" style="color: black">
    <p>
    This is a Test Mail
    </p>
    </div>
    </body>
    </html>'
    $MailMessage.IsBodyHtml = $true
    $SmtpUser = New-Object System.Net.NetworkCredential
    $SmtpUser.UserName = "<username>"
    $SmtpUser.Password = "<password>"
    $smtp.Credentials = $SmtpUser
    $smtp.Send($MailMessage)


    Danke in vorraus
    Gruß
    Kossi

  • Hallo Kossi,


    hier mal ein Auszug aus meinem Code. Vielleicht hilft dir das Beispiel weiter.
    Relevant zum Speichern ist die letzte Zeile. Im Ordner "out" kannst du einzelne Unterordner ansprechen. In meinem Beispiel ist der Ordner "0" der erste Unterordner im Ausgang des Users. So trenne ich die automatisch versendeten Mails von den "normal" versendeten Mails.


    Code
    Set oArchiveOut = oAccount.GetArchive("\\...\david\archive\user\" & UserPath & "\out\0")
    Set oMailItem = oArchive.NewItem(DvApi32.DvItemTypes.DvEMailItem)
     .
     . 
    oMailItem.Send
    oMailItem.Save oArchivout, MailItem

    Über das Script werden bei uns Rechnungen und Angebote vom ERP-System per Batch versendet. Eine Kopie wird in das Unterverzeichnis des Postausgangs des jeweiligen Sachberarbeiters abgelegt.


    Viel Erfolg
    Kai-Uwe

  • Danke Kai-Uwe für deine Antwort.


    Den David über das Office COM-Add-Ins einzubinden und das Mail versenden hat geklappt. Die API als Assembly im Powershell Skript einzubinden und ein Mail abzuschicken habe ich noch nicht hingekriegt.


    Sub Test_Send2()
    'Late Binding
    Dim oApp As Object
    Dim oAccount As Object
    Dim oArchive As Object
    Dim oMailItem As Object
    Dim oAttachment As Object
    Dim l As Long
    Dim sAdresse As String
    Dim sAufDat As String
    Dim sHinweis As String
    Set oApp = CreateObject("DVOBJAPILib.DvISEAPI")
    Set oAccount = oApp.Logon("", "", "", "", "", "AUTH")
    ' Set oArchive = oAccount.GetSpecialArchive( _
    ' DvApi32.DvArchiveTypes.DvArchivePersonalOut)
    Set oArchive = oAccount.GetArchive("\\...\david\archive\user\" & UserPath & "\out\")
    Set oMailItem = oArchive.NewItem(2)
    l = oMailItem.Recipients.Add("....@gmx.de", "MAIL", "")
    oMailItem.Subject = "Test Mail"
    oMailItem.BodyText.HTMLText = "Das ist ein HTMLText"
    oMailItem.Options.UserHold = False
    End Sub


    So morgen versuch ich das mal in Powershell zum laufen zu bringen.


    Gruß
    Kossi

  • Hallo Zusammen,


    kurz noch als Hinweis dazu: Im ersten Posting hat Kossi versucht die Mail per SMTP über den David Postman zu versenden. In dem Falle ist leider keine Zuordnung zu einem Benutzer möglich, soweit ich das im Kopf habe.


    Eventuell geht es, wenn man die Betreffende E-Mailadresse als AUTH Domainnamen einträgt (klingt komisch, könnte aber so sein ;) ). Wir haben diese Option in älteren Versionen benutzt, um eine userbezogene SMTP Authentifizierung hinzubekommen (bevor es die erweiterten Optionen im Postman diesbezüglich gab). Ich bin mir aber gerade nicht mehr sicher, ob die Mails in dem Falle im Userausgang gelandet sind oder nicht.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo,


    $oApp = New-Object -ComObject DVOBJAPILib.DvISEAPI
    $oAccount = $oApp.Logon("", "", "", "", "", "AUTH")
    $userArchive = "\user\archive\ausgang"
    $oArchive = $oAccount.GetArchive($userArchive)
    $oMailItem = $oArchive.NewItem(2)
    $number = $oMailItem.Recipients.Add("...@gmx.de", "MAIL", "")
    $oMailItem.Subject = "Test Mail"
    $oMailItem.BodyText.HTMLText = "Das ist ein Test HTMLText"
    $oMailItem.Options.UserHold = False
    $file = "C:\Attachment.txt"
    $oAttachment = $oMailItem.Attachments.Add($file, "")


    Bis hierhin funktioniert alles Wunderbar.


    Aber beim
    $oMailItem.Send()
    erhalte ich ein "System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben."



    Meine erste Frage ist warum wird diese Ausnahme nicht im VBA geworfen?
    Meine zweite Frage ist hat jemand von euch solch eine Ausnahme programmatisch gelöst?


    Danke,
    Gruß
    Kossi

  • Hallo Kossi,


    grundsätzlich erscheint mir das richtig. In Deinem VBA Beispiel oben wird allerdings keine Send Methode aufgerufen.


    Warum da in PowerShell eine Fehlermeldung geworfen wird, kann ich Dir nicht sagen. Ich vermute mal, dass PowerShell etwas dagegen hat, was die Tobit API in dem Moment versucht.


    Hast Du mal ein einfachstes Beispiel versucht, ohne Anhänge, etc.?
    Versuch alternativ auch mal den Versand über das MessageItem2 statt dem MailItem.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!