Outlook E-Mail mit Attachment senden

  • Hallo, seit langen hab ich mich mal wieder mit Autoit beschäftigt.
    Es ging darum eine E_Mail zu erzeugen wo folgendes vorgegeben ist.
    - Empfänger
    - Subject
    - Mailtext
    - Anhang, Attachment

    Das Problem war wohl das Attachment.
    Mit suchen habe ich da nichts gefunden, aber durch tüfteln.

    Vielleicht kann es ja jemand brauchen :)

    [autoit]


    #include <INet.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;Hier kommt die Registry Abfrage nach dem Schlüssel den HeiWoMa entdeckt hat. Gibt es den Schlüssel nicht ($Outlookexist =""), dann ist auch kein ;Outlook auf dem System installiert.
    $Outlookexist = RegRead("HKEY_CLASSES_ROOT\msgfile\shell\open\command", "command")

    [/autoit][autoit][/autoit][autoit]

    ;Hier sieht man das die Variabe leer zurückgekommen ist, also kein Outlook installiert.
    ;E-Mail wird über den Standard E-Mail client z.B.OE versendet.
    If $Outlookexist = "" Then
    $address = "name@domain.com"
    $subject = "Aktueller Betreff"
    $Body = "Aktueller Mailtext"
    _INetMail($address, $subject, $Body)
    ;Sollte der Schlüssel exisieren und nicht leer zurückkommen, tritt die Funktion CreateMailItem in Kraft, die die e-mail in Outlook öffnet.
    Else
    CreateMailItem()
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Func CreateMailItem()
    Local $olMailItem = 0
    Local $olFormatRichText = 3
    Local $olImportanceNormal = 1

    [/autoit][autoit][/autoit][autoit]

    $oOApp = ObjCreate("Outlook.Application")
    $oOMail = $oOApp.CreateItem($olMailItem)

    [/autoit][autoit][/autoit][autoit]

    With $oOMail
    .To = ("name@domain.com")
    .Subject = "Aktueller Betreff"
    .Body = "Aktueller Mailtext"
    ;.BodyFormat = $olFormatRichText ;Diese Funktion geht ab Outlook 2003, auskommentiert für die Outlook 2000 Kompabilität
    .Attachments.Add ("Pfadangabe")
    .Importance = $olImportanceNormal
    .Display
    ; .Send ;Die Send Funktion ist wegen den Outlook Sicherheitsrichtlinien ausgeschaltet.
    EndWith
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    :)

    Gruß
    Wolke

  • geil danke ;)

    eine frage habe ich aber noch...
    kann man bei _INetMail auch ein attachement mitgeben?

    grüße

  • Man kann doch auch per AutoIt E-Mails versenden ?(
    Naja egal aber @bjoernit:

    Spoiler anzeigen
    [autoit]


    #include<file.au3>
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

    [/autoit] [autoit][/autoit] [autoit]

    $SmtpServer = ""
    $FromName = "r"
    $FromAddress = ""
    $ToAddress = ""
    $Subject = ""
    $Body = ""
    $AttachFiles = "" ;<------------------------------------- HIER
    $CcAddress = ""
    $BccAddress = ""
    $Importance = ""
    $Username = ""
    $Password = ""
    $IPPort = 25
    $ssl = 1
    $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

    [/autoit] [autoit][/autoit] [autoit]

    Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
    $objEmail.HTMLBody = $as_Body
    Else
    $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
    Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
    For $x = 1 To $S_Files2Attach[0]
    $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
    ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF)
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment($S_Files2Attach[$x])
    Else
    ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
    SetError(1)
    Return 0
    EndIf
    Next
    EndIf
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 Then $IPPort = 25
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    If $s_Username <> "" Then
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    $objEmail.Configuration.Fields.Update
    Switch $s_Importance
    Case "High"
    $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
    Case "Normal"
    $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"
    Case "Low"
    $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    $objEmail.Send
    If @error Then
    SetError(2)
    Return $oMyRet[1]
    EndIf
    $objEmail = ""
    EndFunc ;==>_INetSmtpMailCom
    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
    SetError(1)
    Return
    EndFunc ;==>MyErrFunc

    [/autoit]

    Padmak