shellexecute und mailto

  • Hallo,

    ich erzeuge wie im spoiler zu sehen eine mail. Ich habe das Problem, dass unter Windows 7 (Outlook 2003) eine e-mail erzeugt aber unter XP (Outlook 2003) die Fehlermeldung angezeigt wird: "Windows cannot access the specified device, path or file. You may not have the appropriate permissions to access the item"

    Spoiler anzeigen
    [autoit]

    ShellExecute("mailto:test@test.de?subject=Your%20ref:%2057.77236/03%20-%20our%20ref.:%20%20-%20DE%201225856%20%22Absorbierender%20Artikel%20mit%20unters%22&body=--------------------------------------------------------------------------------------------------------------%0D%0A%0D%0Aihr%20Aktenzeichen:%20%20%20%20%20%20%2057.77236/03%0D%0A%0D%0Aunser%20Aktenzeichen:%20%20%20%20%2015399N-DE%0D%0A%0D%0ATitel:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Absorbierender%20Artikel%20mit%20unterschiedlichen%20Bereichen%20welche%20in%20verschiedenen%20Richtungen%20dehnbar%20ausgef%C3%BChrt%20sind%0D%0A%0D%0ABesitzer:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Inc.%0D%0A%0D%0A--------------------------------------------------------------------------------------------------------------%0D%0A%0D%0A%0D%0A%0D%0ASehr%20geehrter%20%25name,%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%20%0D%0A%0D%0A80331%200D%0A%0D%0A%20%0D%0A%0D%0A%20%20%0D%0A%0D%0ATel.:%20%20%20%20%20+49%20(0)%2089%20232%2069%20-%200%0D%0A%0D%0AFax.:%20%20%20%20+49%20(0)%2089%20232%2069%20-%20232%0D%0A%0D%0A%20%0D%0A%0D%0ANOTICE:%20This%20e-mail%20message%20and%20any%20attached%20files%20are%20confidential%20and%20are%20legally%20privileged.%20If%20you%20are%20not%20the%20addressee,%20any%20disclosure,%20reproduction,%20copying,%20distribution%20or%20other%20dissemination%20or%20use%20of%20this%20communication%20is%20strictly%20prohibited.%20If%20you%20have%20received%20this%20transmission%20in%20error,%20please%20notify%20the%20sender%20immediately%20and%20then%20delete%20this%20e-mail%20message,%20in%20its%20entirety%20and%20with%20all%20attachments,%20from%20your%20system.%20E-mail%20transmission%20cannot%20be%20guaranteed%20to%20be%20secure%20or%20error-free%20as%20information%20could%20be%20intercepted,%20corrupted,%20lost,%20destroyed,%20incomplete%20and/or%20contain%20viruses.%20The%20sender%20therefore%20does%20not%20accept%20any%20liability%20whatsoever%20for%20errors%20or%20omissions%20in%20the%20contents%20of%20this%20message%20or%20anything%20else%20arising%20from%20this%20e-mail%20transmission.%0D%0A%0D%0A%0D%0A%0D%0A")

    [/autoit]

    aber ohne body geht es sowohl bei xp als auch windows 7

    Spoiler anzeigen
    [autoit]

    ShellExecute("mailto:test@test.de?subject=Your%20ref:%2057.77236/03%20-%20our%20ref.:%2015399N-DE%20-%20DE%201225856%20%22Absorbierender%20Artikel%20mit%20unters%22&body=")

    [/autoit]

    Also habe ich ausprobiert und wenn ich den Body verkürze funktioniert es auch unter XP. Weiß jemand wie man diese Limitierung aufhebt oder umgeht?

    Danke

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    5 Mal editiert, zuletzt von franzp (16. August 2010 um 14:42)

  • Hallo Franz!

    Also
    habe ich ausprobiert und wenn ich den Body verkürze funktioniert es
    auch unter XP. Weiß jemand wie man diese Limitierung aufhebt oder
    umgeht?


    Das ist natürlich auch 'ne verwegene Methode, Mails zu verschicken, vor Allem, wenn's dann so Monsterzeilen sind.
    Dass Windows XP eine Fehlermeldung von sich gibt, Windows 7 aber nicht, liegt wohl daran, dass die beiden OSs mit dem langen Befehl (2244 Zeichen) unterschiedlich umgehen. Windows 7 "meckert" zwar nicht, schneidet aber den letzten Teil des Bodys ab.

    Die maximale Befehlszeilenlänge bei Windows XP beträgt 8191 Zeichen, siehe hier .

    Wenn Du allerdings ShellExecute benutzt, bestimmt der Wert von INTERNET_MAX_URL_LENGTH die maximale Länge. Diese liegt dann bei 2048 Zeichen, siehe auch hier oder dort .

    Ich glaube, um das zu ändern, müsste man AutoIt neu kompilieren.

    Wenn Du zum Versenden den Standard-Mailclient benutzen möchtest, wäre vielleicht _INetMail eine Alternative.

    Falls Du die Mails direkt per SMTP verschicken möchtest, böte sich da noch _INetSmtpMail an bzw. dieser Link aus dem Forum.

    Gruß
    Moctezuma III.

  • vielen dank.

    ja ich weiß dass die Methode seltsam gewählt war. Der grund für diese methode war, dass die E-mail nicht sofort versendet werden soll. Sondern einfach nur geöffnet und dann weiter bearbeitet werden kann.

    Ich dachte

    [autoit]

    _INetMail

    [/autoit]

    versendet sofort. Aber das ist garnicht so. :P Also ist das natürlich die wesentlich bessere Alternative... Vielen Dank ! :D

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Achso dabei fällt mir auf. Gibt es bei _INetMail keine Möglichkeit einen Empfänger CC zu setzen ?

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • naja du könnstest dir doch die Funktion umschreiben.
    da gibts mit sicherheit auch Parameter für BCC

    Spoiler anzeigen
    [autoit]

    Func _INetMail($s_MailTo, $s_MailSubject, $s_MailBody)
    Local $prev = Opt("ExpandEnvStrings", 1)
    Local $var = RegRead('HKCR\mailto\shell\open\command', "")
    Local $ret = Run(StringReplace($var, '%1', _INetExplorerCapable('mailto:' & $s_MailTo & '?subject=' & $s_MailSubject & '&body=' & $s_MailBody)))
    Local $nError = @error, $nExtended = @extended
    Opt("ExpandEnvStrings", $prev)
    Return SetError($nError, $nExtended, $ret)
    EndFunc ;==>_INetMail

    [/autoit]
  • gute Idee habs quick and dirty umgeschrieben:

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _INetMail
    ; Description ...: Open default mail client with given Address/Subject/Body
    ; Parameters ....: $s_MailTo - Address for E-Mail
    ; $s_MailCC - Adress for CC Mail (optional)
    ; $s_Subject - Subject <Weswolf at aol dot com>of E-Mail
    ; $s_MailBody - Body of E-Mail
    ;
    ; Return values .: On Success - Process ID of e-mail client
    ; On Failure - Returns 0 and sets @error to non-zero.
    ; Author ........: Wes Wolfe-Wolvereness <Weswolf at aol dot com>
    ; ===============================================================================================================================

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

    Func _INetMail($s_MailTo, $s_MailSubject, $s_MailBody, $s_MailCC='')
    Local $prev = Opt("ExpandEnvStrings", 1)
    Local $var = RegRead('HKCR\mailto\shell\open\command', "")
    ;Local $ret = Run(StringReplace($var, '%1', _INetExplorerCapable('mailto:' & $s_MailTo & '?subject=' & $s_MailSubject & '&body=' & $s_MailBody)))
    if $s_MailCC <> "" Then
    Local $ret = Run(StringReplace($var, '%1', _INetExplorerCapable('mailto:' & $s_MailTo & '?subject=' & $s_MailSubject & '&CC=' & $s_MailCC & '&body=' & $s_MailBody)))
    Else
    Local $ret = Run(StringReplace($var, '%1', _INetExplorerCapable('mailto:' & $s_MailTo & '?subject=' & $s_MailSubject & '&body=' & $s_MailBody)))
    EndIf

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

    Local $nError = @error, $nExtended = @extended
    Opt("ExpandEnvStrings", $prev)
    Return SetError($nError, $nExtended, $ret)
    EndFunc ;==>_INetMail

    [/autoit]

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---