Beiträge von NewProgger

    Also ich habe das nochmals alles durchgeschaut, die Werte gehen über $olCC in die _OL_ItemRecipientAdd ab da bin ich raus, komme da nicht mehr mit.




    Func _OL_ItemRecipientAdd($oOL, $vItem, $sStoreID, $iType, $vP1, $vP2 = "", $vP3 = "", $vP4 = "", $vP5 = "", $vP6 = "", $vP7 = "", $vP8 = "", $vP9 = "", $vP10 = "", $bAllowUnresolved = True)


    Local $oRecipient, $aRecipients[10], $oTempRecipient
    If Not IsNumber($iType) Then Return SetError(5, 0, 0)
    If Not IsObj($vItem) Then
    If StringStripWS($vItem, 3) = "" Then Return SetError(1, 0, 0)
    $vItem = $oOL.Session.GetItemFromID($vItem, $sStoreID)
    If @error Then Return SetError(2, @error, 0)
    EndIf
    ; Move members into an array
    If Not IsArray($vP1) Then
    $aRecipients[0] = $vP1
    $aRecipients[1] = $vP2
    $aRecipients[2] = $vP3
    $aRecipients[3] = $vP4
    $aRecipients[4] = $vP5
    $aRecipients[5] = $vP6
    $aRecipients[6] = $vP7
    $aRecipients[7] = $vP8
    $aRecipients[8] = $vP9
    $aRecipients[9] = $vP10
    Else
    $aRecipients = $vP1
    EndIf
    ; add recipients to the item
    For $iIndex = 0 To UBound($aRecipients) - 1
    ; recipient is an object = recipient name already resolved
    If IsObj($aRecipients[$iIndex]) Then
    $vItem.Recipients.Add($aRecipients[$iIndex])
    If @error Then Return SetError(3, $iIndex, 0)
    Else
    If StringStripWS($aRecipients[$iIndex], 3) = "" Then ContinueLoop
    $oRecipient = $oOL.Session.CreateRecipient($aRecipients[$iIndex])
    If @error Or Not IsObj($oRecipient) Then Return SetError(600 + $iIndex, @error, 0)
    $oRecipient.Resolve
    If @error Or Not $oRecipient.Resolved Then
    If Not (StringInStr($aRecipients[$iIndex], "@")) Or Not ($bAllowUnresolved) Then Return SetError(400 + $iIndex, @error, 0)
    EndIf
    #forceref $oTempRecipient ; to prevent the AU3Check warning: $oTempRecipient: declared, but not used in func.
    $oTempRecipient = $vItem.Recipients.Add($oRecipient)
    If @error Then Return SetError(300 + $iIndex, @error, 0)
    $oTempRecipient.Type = $iType
    EndIf
    Next
    $vItem.Save()
    Return $vItem


    EndFunc ;==>_OL_ItemRecipientAdd

    kannst Du mir erklären warum alle Empfänger ob To (was ja ok ist) aber auch CC in der An Zeile landenden wenn die Mail gesendet wird ?


    übergeben wird mit to und cc gesendet wird alles in to und ich kann den Fehler nicht finden. Die Wertübergaben sehen alle gut aus so wie ich das sehe.
    Könntest Du nochmal einen Blick drauf werfen ?


    Übrigens die "neue Funktion" ist SUPER :thumbsup: jetzt geht es sehr einfach.



    Func Senden()



    Local $data = $pto
    Local $data1 = $pcc
    Local $bcc = _GUICtrlEdit_GetText($fbcc)
    ;Global $to = StringSplit($data, ";",2)
    ;Global $cc = StringSplit($data1, ";",2)
    ;Global $data2 = StringSplit($bcc, ";",2)


    Global $textfeld = stringreplace(_GUICtrlEdit_GetText($Edit1), @CRLF, "<br>")
    Global $betreff=$pnotfall & " " & $melde


    ; Open the connection to Outlook
    Global $oOL = _OL_Open()


    ; Mailusertest TO & CC


    Global $aResult = _OL_ItemRecipientCheckEx($oOL, $data, "", "", "", "", "", "", "", "", "", True)
    Global $aResult1 = _OL_ItemRecipientCheckEx($oOL, $data1, "", "", "", "", "", "", "", "", "", True)


    ; Create a mail item and set some properties
    Global $oItem = _OL_ItemCreate($oOL, $olMailItem, "*", "", "Subject=" & $betreff, "BodyFormat=" & $olFormatHTML, "HTMLBody=" & $textfeld, "SentOnBehalfOfName=Servicedesk@hermes-europe.eu")
    ConsoleWrite("itemcreate error " & @error & " Extendet " & @extended & @CRLF)





    ; Add a recipient and resolve it
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olTo, $aResult)
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olCC, $aResult1)
    ;_OL_ItemRecipientAdd($oOL, $oItem, Default, $olbcc, $aBcc)
    ConsoleWrite("itemrecive error " & @error & " Extendet " & @extended & @CRLF)


    ; Send the mail
    _OL_ItemSend($oOL, $oItem)
    If @extended = -2147352567 Then _
    MsgBox(16, "OutlookEX UDF - Example Script", "You don't have permission to send the mail on behalf of the specified person!")
    ConsoleWrite("send error " & @error & " Extendet " & @extended & @CRLF)



    ich habe die Berechtigung ohne die Checkfunktion klappt es ja bzw. wenn kein Empfänger drin steht der ungültig ist.
    und nun kommt nach dem Filtern auch der Fehler obeohl es passen müsste da alle Empfänger gültig sind.


    hast Du noch eine Idee woran das liegen könnte ?

    Du musstdringend Deine Array Kenntnisse auffrischen ;-)


    Da hast Du recht und nicht nur das... :)


    Also das Filtern klapp soweit gut aber das Übergeben an die _OL_ItemRecipientAdd bzw. Senden da bekomme ich den "no permission" fehler allerdings ohne Error und Extendet code.
    itemcreate error 0 Extendet 0
    itemrecive error 0 Extendet 0
    send error 0 Extendet 0


    Die Werte in der gefilterten Variable $sTo scheinen korrekt
    Nachname, Vorname;Nachname, Vorname; etc.


    hier nochmal die Senden Funktion:



    Func Senden()
    Global $iMax
    Global $iMax1
    Global $iMax2
    Local $data = $pto
    Local $data1 = $pcc
    Local $data2 = _GUICtrlEdit_GetText($fbcc)
    Global $to = StringSplit($data, ";",2)
    Global $cc = StringSplit($data1, ";",2)
    Global $bcc = StringSplit($data2, ";",2)
    If IsArray($to) Then
    $iMax = UBound($to)
    For $i = 0 to $iMax - 1
    Next
    EndIf


    If IsArray($cc) Then
    $iMax1 = UBound($cc)
    For $i = 0 to $iMax1 - 1
    Next
    EndIf


    If IsArray($bcc) Then
    $iMax2 = UBound($bcc)
    For $i = 0 to $iMax - 1
    Next
    EndIf



    ; Open the connection to Outlook
    Global $oOL = _OL_Open()


    ; Mailusertest


    Global $TOstring = _ArrayToString($to, ";")


    Global $aResult = _OL_ItemRecipientCheck($oOL, $TOstring)
    ConsoleWrite("Check " & @error & " Extendet " & @extended & @CRLF)
    If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemRecipientCheck Example Script", "Error frunning _OL_ItemRecipientCheck. @error = " & @error & ", @extended = " & @extended)
    _ArrayDisplay($aResult, "OutlookEX UDF: _OL_RecipientCheck Example Script", _
    "", 0, "|", "Row|Recipient|Resolved?|Recipient object|AddressEntry object|Mail address|DisplayType|Name")


    Global $sTo = ""
    For $i = 1 To $aResult[0][0]
    If $aResult[$i][1] = True Then $sTo &= $aResult[$i][6] & ";"
    Next


    ConsoleWrite($sTo & @CRLF)


    ; Create a mail item and set some properties
    Global $oItem = _OL_ItemCreate($oOL, $olMailItem, "*", "", "Subject=" & $betreff, "BodyFormat=" & $olFormatHTML, "HTMLBody=" & $textfeld, "SentOnBehalfOfName=Servicedesk")
    ConsoleWrite("itemcreate error " & @error & " Extendet " & @extended & @CRLF)


    ; Add a recipient and resolve it
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olTo, $sTo)
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olcc, $cc)
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olbcc, $bcc)
    ConsoleWrite("itemrecive error " & @error & " Extendet " & @extended & @CRLF)


    ; Send the mail
    _OL_ItemSend($oOL, $oItem)
    If @extended = -2147352567 Then _
    MsgBox(16, "OutlookEX UDF - Example Script", "You don't have permission to send the mail on behalf of the specified person!")
    ConsoleWrite("send error " & @error & " Extendet " & @extended & @CRLF)


    EndFunc

    Das mit dem auslesen der True Daten und in ein String zusammen fassen klappt jetzt nicht wirklich


    ich habe einiges versucht, aber ich muss zugeben ich weiß schlicht weg nicht wie das geht :(



    If IsArray($aResult) Then
    For $i = 0 to UBound($aResult) -1

    Next
    EndIf



    muss ich das mit _arraySearch machen ?


    Edit: Ich habe natürlich gesucht, aber das scheint alles irgendwie nicht zu passen

    Ok schätze jetzt klappt es, keine Ahnung was das Problem war habe alles per Hand noch einmal neu geschrieben dann ging es.


    aber nun wird mir ja das ganze Array ausgegeben mit True oder False, wie Filtere ich die False raus und gebe den Rest weiter an _OL_ItemSend ?
    Es soll ja Automatisch ablaufen ohne das der User etwas dazu tun muss.


    Evtl eine Ausgabe welche Empfänger False sind.

    Ich bekomme leider kein gescheites Ergebnis.


    [Blockierte Grafik: http://up.picr.de/19611188rb.jpg]


    nur eine leeres Array Display.
    ich habe das Array so übergeben:

    Global $aResult = _OL_ItemRecipientCheck($oOL, $sToCheck = _ArrayToString($to, ";"))

    So hatte ich es auch noch versucht:



    $sToCheck = _ArrayToString($to, ";")
    Global $aResult = _OL_ItemRecipientCheck($oOL, $sToCheck)

    wie ist das wenn ein User der nicht im Adressbuch ist gefundden wird muss der dann mit der Funktion _OL_ItemRecipientDelete entfernt werden ?

    Water deine scripte sind ich Hammer aber auch sehr kompliziert zumindest wenn man nicht vollzeitprogrammierer ist.



    Wenn ich jetzt mal ein Stück aus der Vorlage nehme:



    Global $aResult = _OL_ItemRecipientCheck($oOL, $vRecipients ????? ) ;hier würde ich dann ja mein gefülltes Array eintragen wo die ganzen Empfänger drin sind oder ? das wäre bei mir $to aber wie übergebe ich das ? ich bekomme immer Fehler |2 - $vRecipients is empty


    If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemRecipientCheck Example Script", "Error frunning _OL_ItemRecipientCheck. @error = " & @error & ", @extended = " & @extended)
    _ArrayDisplay($aResult, "OutlookEX UDF: _OL_RecipientCheck Example Script", _
    -1, 0, "", "|", "Row|Recipient|Resolved?|Recipient object|AddressEntry object|Mail address|DisplayType|Name")



    Gruß Flo

    Hallo zusammen,


    ich habe ein dringendes Problem.



    wenn ich über das Outlook UDF eine Mail versenden will (im Auftrag von ) und in der Liste ein User ist der nicht im Outlookadressbuch ist gibt es einen Fehler wenn die Person an erster
    Stelle steht oder wenn er an 2. Stelle steht werden keine Mails an alle die dahinter stehen geschickt.


    Das ist fatal! gibt es eine Möglichkeit diese User Automatisch zu Filtern oder nicht zu beachten ?



    Hier einmal die Senden Funktion:



    Func Senden()
    Global $iMax
    Global $iMax1
    Global $iMax2
    Local $data = $pto
    Local $data1 = $pcc
    Local $data2 = _GUICtrlEdit_GetText($fbcc)
    Global $to = StringSplit($data, ";",2)
    Global $cc = StringSplit($data1, ";",2)
    Global $bcc = StringSplit($data2, ";",2)



    If IsArray($to) Then
    $iMax = UBound($to); get array size
    For $i = 0 to $iMax - 1; subtract 1 from size to prevent an out of bounds error
    Next
    EndIf


    If IsArray($cc) Then
    $iMax1 = UBound($cc); get array size
    For $i = 0 to $iMax1 - 1; subtract 1 from size to prevent an out of bounds error
    Next
    EndIf


    If IsArray($bcc) Then
    $iMax2 = UBound($bcc); get array size
    For $i = 0 to $iMax - 1; subtract 1 from size to prevent an out of bounds error
    Next
    EndIf


    #ConsoleWrite($to[0] & @CRLF)
    #ConsoleWrite($to[1] & @CRLF)



    ; Open the connection to Outlook
    Global $oOL = _OL_Open()



    ; Create a mail item and set some properties
    Global $oItem = _OL_ItemCreate($oOL, $olMailItem, "*", "", "Subject=" & $betreff, "BodyFormat=" & $olFormatHTML, "HTMLBody=" & $textfeld, "SentOnBehalfOfName=Servicedesk")
    ConsoleWrite("itemcreate error " & @error & " Extendet " & @extended & @CRLF)


    ; Add a recipient and resolve it
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olTo, $to)
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olcc, $cc)
    _OL_ItemRecipientAdd($oOL, $oItem, Default, $olbcc, $bcc)
    ConsoleWrite("itemrecive error " & @error & " Extendet " & @extended & @CRLF)



    ; Send the mail
    _OL_ItemSend($oOL, $oItem)
    If @extended = -2147352567 Then _
    MsgBox(16, "OutlookEX UDF - Example Script", "You don't have permission to send the mail on behalf of the specified person!")
    ConsoleWrite("send error " & @error & " Extendet " & @extended & @CRLF)



    EndFunc


    ich hoffe ihr könnt mir helfen.


    Gruß
    Florian

    Ja super das ist doch das was ich suche.


    Aber wie ist das jetzt mit der HTML Formatierung für den Import in Outlook ?
    Ich habe das noch nicht getestet aber ich schätze mal der nimmt das nun als fließtext wenn ich das Edit Feld mit GUICtrlRead auslese und in eine
    Variable schreibe die das dann an das Outlook UDF weitergibt oder ?


    so ne idee:


    sollte ich vielleicht auch hier mit Platzhaltern arbeiten und zum Beispiel "+" als newline zeichen durch <br> ersetzen bevor der Text aus dem
    Edit Feld ausgelesen wird?


    Also angezeigt wird es noch mit:


    Dies ist der erste Satz+
    Dies ist der zweite Satz+


    etc...


    und sobald man auf senden geht wird in die Variable "Dies ist der erste Satz<br>" geschrieben damit es in Outlook schön formatiert ist?

    ok ich hole etwas weiter aus. Zuerst einmal Sorry ich meinte natürlich Editbox...


    Also ich baue ein Tool für eine Notfallkommunikation per Mail, wo eine Störungsart etc. ausgewählt wird.
    Aus einer ini Datei wird der entsprechende Mailverteiler ausgelesen an den das ganze gehen soll. Zu der jeweiligen Störung soll eine Textvorlage gesendet werden, die in der GUI
    in einer EditBox die aber deaktiviert ist angezeigt werden soll.


    Die Textvorlage ist immoment in das Script eingebettet, das ist aber wie gesagt nicht das beste weil man das nicht schnell mal ändern kann.
    Das anzeigen in der EditBox dient nur der Ansicht, das der Nutzer sieht was drin steht in der Mail.


    Die Auszufüllenden Felder werden unten in den Text übernommen und der User kann nachher den gesamten Mailtext sehen wie er gesendet wird.



    So sieht das aus:


    [Blockierte Grafik: http://up.picr.de/19563802ms.jpg]




    Mir geht es nun darum den Mailtext von aussen (ausserhalb des Scripts) zu hinterlegen und auch ändern zu können und bei Programmstart wird dieser eingelesen.
    da die Formatierung ja nicht gleich der im Outlook ist sieht das natürlich echt wild aus. Autoit Formatierung mit HTML gemischt oO :-S
    Anders geht es aber anscheinend nicht.


    Ich hoffe ich konnte es nun etwas erleuchtender beschreiben ?


    Gruß
    Flo

    Hallo zusammen,


    ich suche ein Möglichkeit wie ich einen Langen Formatierten Text einlesen kann und ihn dann in einer ComboBox anzeigen lassen kann und mit zusätzlichen Details versehen kann.


    Beispiel:
    bisher habe ich das so versucht, was aber nicht sehr Produktiv ist da der Text fest in das Script geschrieben ist. Ich möchte die Texte gern einlesen wo man sie extern bearbeiten kann.


    Das ganze wird dann nachher per Mail gesendet deswegen die HTML Formatierung zwischen drin.

    GUICtrlSetData($Edit1, "Sehr geehrte Damen und Herren,<br><br><br>"& @CRLF & @CRLF & @CRLF & "seit " & $zeit & " Uhr liegt folgender Ausfall in " & $anr & " vor:<br>" & @CRLF & $stoerung & @CRLF &"<br><br>Service Desk Call-Nr." & $ticket & @CRLF & @CRLF & _
    "<br><br>Bitte beachten Sie unsere HLG Infoseite auf der wir Informationen zur aktuellen Störung ausgeben.<br>" & @CRLF & _
    "Wir informieren Sie, sobald die Störung behoben ist.<br><br><br>" & @CRLF & @CRLF & @CRLF & "Mit freundlichen Grüßen With best regards<br><br>" & @CRLF & @CRLF & "Service Desk<br>"



    Es soll halt formatiert in der KomboBox sein als auch in der Mail die anschließend geschickt wird
    Natürlich müssen auch die Platzhalter $anr ,$stoerung etc. weiter enthalten bleiben.



    Gibt es eine Möglichkeit das zu realisieren ? dies hier funktioniert zwar aber ist nicht sehr schön und wenn man den Text ändern will muss gleich das ganze Programm neu Compiled werden.



    vielen Dank schon mal für gute Ideen.
    Gruß
    Florian

    Hallo zusammen,



    ich habe folgendes vor:


    Dank Water und seinem richtig guten Outlook UDF habe ich eine GUI gestaltet, aus der je nach Vorfall/Störung eine Mail an einen bestimmten Mailverteiler bzw. Personen geschickt wird inkl. cc und bcc.
    Da sich die Mailverteiler aber ständig ändern müssen die in einer Datei (meine ersten versuche waren mit einer .ini) gespeichert werden.


    Das anpassen soll natürlich keine Qual sein (meine ersten versuche waren vorfall=verteiler1|verteiler2|etc..) das anzupassen mach sicher kein Spaß da wir ca. 30 Systeme haben und vor allem wiederholen sich auch einige Verteiler in anderen Vorfällen.



    das ganze soll nachher jeweils in ein Array was dann an das Outlook UDF zum senden übergeben wird.



    Was wäre eurer Meinung nach die beste Lösung dafür? Ich bin sehr gespannt was dabei raus kommt, ich dachte noch an CSV oder halt ne kleine DB? aber ich glaube das wäre to much ich schätze mal das sind alles in allem 50 Verteiler und ein paar Einzelpersonen.





    viele Grüße
    Flo

    DANKE


    könnt alles so einfach sein..... aller Anfang ist schwer aber das der StringSplit die null schreibt darauf bin ich nicht gekommen deshalb auch nicht die Hilfe gelesen.

    Hallo zusammen,


    kann mir mal jemand verraten warum sich mein Array an erster stelle mit einer 2 füllt ?




    #include <Array.au3>


    Global $data="Element1|Element2"
    Global $iMax
    Global $arr = StringSplit($data, "|")


    If IsArray($arr) Then
    $iMax = UBound($arr)


    ConsoleWrite("Items in the array: " & $iMax & @LF)


    For $i = 0 to $iMax - 1


    Next
    EndIf
    ConsoleWrite($arr[0] & @LF)
    ConsoleWrite($arr[1] & @LF)


    Ergebnis:


    Items in the array: 3
    2
    Element1


    wo kommt die 2 her ?