_Inetmail mit Anhang

  • Hallo,

    brauch mal wieder eure Hilfe...
    Gibt es eine Möglichkeit, die Funktion _Inetmail so zu erweitern, das man nen Anhang mit ranhängen kann?
    Über Smtp ist es kein Prob, wird aber so gewünscht, dass das Standartmailprogramm aufgeht und man die Mail mit Anhang dann vor den Augen hat...

    Es kommen 2 Mailporgs zum Einsatz: OutlookExpress und Thunderbird...

    Danke für eure Hilfe!

  • Das würde ja heißen, Du musst die Mail in die Postfachdatei (Outlock = PST, Thunderbird wahrscheinlich MBX) einfügen.

    Ob es bei Outlock geht kann ich nicht sagen, aber beim MBX-Format (ist ja Klartext) sollte es gehen. Ist aber viel Aufwand.

    Du musst den Anhang "kodieren" (MIME64) und mit passendem Mail-Header und dem Header des MBX-Formates an die (Eingangs-)Postfachdatei Deines Thunderbird-Profiles anhängen. Anschließend muss die zur Maildatei gehörende Index-Datei neu indiziert werden. Ob Thunderbird dafür einen Kommandozeilen-Befehl hat, glaube ich zu bezweifeln. Also musst Du mal nach einem Freewaretool schauen oder wieder in die Tiefen der Indexdatei schauen und selber programmieren. Manchmal hilft es auch die Indexdatei zu löschen. Dann dauert der erste Start zwar einen Moment länger, aber meist bauen die Mailprogramme die Indexdatei alleine neu auf, wenn sie fehlt.
    Wenn beides erfolgt ist, öffnest Du den Posteingang im Mailprogramm und die Mail sollte erscheinen.

    Viel Arbeit ! Einfacher ist es ganz sicher, die Mail mit Anhang an einen SMTP-Server schicken (das habe ich fertig als Script liegen) und das Mailprogramm öffnen und neue Mails abrufen lassen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ich möchte dieses Thema nochmal aufgreifen, denn ich bräuchte quasi auch sowas wie _InetMail nur mit der Möglichkeit, dass man der Email Anlagen/Attachments zusätzlich mit übergibt.

    Also ich suche eine Lösung, die ein neues Compose-Fenster des am System voreingestellten Standard-Email-Programmes startet oder öffnet, bei dem dann gleich Subject und Body ausgefüllt ist und eben die Attachments dann schon dran hängen.

    Da das Programm auf unterschiedlichen Rechnern zum Einsatz kommt, hilft mir auch nicht ein selbst geschriebener SMTP-Emailer. Ich möchte schon, dass der User die Email ggf. selber ergänzen kann und dann selber abschickt.

    Gibt es dafür eine Lösung?

    Besten Dank und happy computing
    R@iner

    PS: Wie funktioniert denn eigentlich in Windows die Rechte-Maustaste-Funktion "Senden an". Die öffnet das Standard-Email-Programm, hängt das Attachment gleich hin und füllt Subject und Body aus. Kann man diese Funktion irgendwie aufrufen?

  • Zumindest ohne Anhang weiß ich, wie es geht:

    [autoit]

    ShellExecute("mailto:adresse@example.com?subject=Betreff&body=Dieser+Text+ist+der+Inhalt.")

    [/autoit]

    edit: Möglicherweise mit &attachment="Pfad\zur\Datei"

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Ich hab jetzt mal geschaut, wie das "Senden an" -> "Email-Empfänger" funktionieren könnte. Es wird ein "Email-Empfänger.mapimail" aufgerufen, das wiederum ein "C:\WINDOWS\system32\sendmail.dll,-2001" aufrufen soll.

    Leider schaff ich weder das eine, noch das andere irgendwie aufzurufen. Hat da jemand ne Idee? Oder ne Idee, wie ich das eigentliche Problem lösen könnte?

    Besten Dank und viele Grüße
    R@iner

  • Danke für den Link, nur wieviele Leute benutzen Outlook? Und welches Outlook ist da gemeint? In dem Thread ist es etwas schwammig beschrieben. Von Outlook Express und WinMail hab ich gar nichts gelesen beim Überfliegen?

    Mein Hauptproblem ist aber, dass Ich keine Ahnung habe, was auf den Rechnern der Default-Mailer ist, die mein Programm benutzen.

    In meinem privaten Umfeld wird alles verwendet, nur kein Outlook, da man es ja kaufen müßte. Thunderbird, SeaMonkey, TheBat und dieses grausame IncrediMail.

    Für jedes dieser Emailer eine produktspezifische Lösung wollte ich eigentlich nicht machen. Da werde ich nicht mehr fertig. Ich hatte gehofft, eine Universallösung zu finden.

    happy computing
    R@iner

  • Dann solltest richtig lesen ;):

    Zitat

    A lot of testing is still needed as we have written and tested the functions using Outlook 2002 SP3 and Outlook 2010

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Dann lies das Zitat nochmal genau! ;) Da steht nur, dass sie es mit Outlook 2002 und 2010 getestet haben, und dass noch viel zum Testen ist. Da steht weder, dass es z.B. mit Office 2003 geht, noch dass es nicht geht. Von Outlook Express und WinMail habe ich auch nichts gelesen.

    Aber wie schon gesagt, es wäre eine einzelne Produktlösung und das ist eigentlich nicht das was ich suche.

    happy computing
    R@iner

  • Weil sowohl Outlook Express als auch WinMail nichts mit Office Outlook zu tuen haben ;)

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Jo, schon klar, hätte ja trotzdem sein können.

    Dann werde ich wohl mein Vorhaben aufgeben müssen, denn nach stundenlanger Recherche habe ich keinen brauchbaren Ansatz gefunden, wie ich ein Compose-Fenster mit Attachment öffnen lassen könnte. Auch mit dem "senden an" bin ich nicht weiter gekommen.

    Danke an alle und weiterhin happy computing
    R@iner

  • was willst du denn genau machen wäre die frage!

    wir auf arbeit haben es entweder mit der blat.exe oder über die autoit smtp funktion gelöst, mails mit attachments automatisiert zu versenden!

    hier ein älteres beispiel aus dem forum

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <String.au3>

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

    ;#######################################################
    ; 1 tes mal als sms senden # Agent Performance Team BigService #
    ;#######################################################
    ;#########################
    ;pfad für anhang
    ;#########################

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

    $path1 = "\\server\Reporting1.pdf" ;"C:\Reporting\reporting2.pdf" ;attachments
    $mailto_01 = "user1@xxxxx.de;[email='user2@xxxx.de'][/email];user3@xxxx.de" ; mailempfänger
    MsgBox(0,"",$path1)
    ;#Include<file.au3>
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    ;##################################
    ; Include
    ;##################################
    ;#Include<file.au3>
    ;##################################
    ; Variables
    ;##################################
    $s_SmtpServer = "10.xx.xx.xx" ; address for the smtp-server to use - REQUIRED
    $s_FromName = "support@xxxxxx.de" ; name from who the email was sent
    $s_FromAddress = "support@xxxxxx.de" ; address from where the mail should come
    $s_ToAddress = $mailto_01 ; destination address of the email - REQUIRED
    $s_Subject = "report" ; subject from the email - can be anything you want it to be
    $as_Body = ""; the messagebody from the mail - can be left blank but then you get a blank mail
    $s_AttachFiles = $path1 ; the file you want to attach- leave blank if not needed
    $s_CcAddress = "" ; address for cc - leave blank if not needed
    $s_BccAddress = "support@xxxxx.de" ; address for bcc - leave blank if not needed
    $s_Username = "tool" ; username for the account used from where the mail gets sent - Optional (Needed for eg GMail)
    $s_Password = "xxxxxxxx" ; password for the account used from where the mail gets sent - Optional (Needed for eg GMail)
    $IPPort = 25 ; port used for sending the mail
    $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
    ;~ $IPPort=465 ; GMAIL port used for sending the mail
    ;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

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

    ;##################################
    ; Script
    ;##################################
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
    If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
    EndIf
    ;

    [/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_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
    $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])
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment ($S_Files2Attach[$x])
    Else
    $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
    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
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    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
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Sent the Message
    $objEmail.Send
    if @error then
    SetError(2)
    return $oMyRet[1]
    EndIf
    EndFunc ;==>_INetSmtpMailCom
    ;
    ;
    ; Com Error Handler
    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); something to check for when this function returns
    Return
    EndFunc ;==>MyErrFunc

    [/autoit]

    gruß gmmg

    Einmal editiert, zuletzt von gmmg (20. Oktober 2011 um 10:22)

  • was willst du denn genau machen wäre die frage!


    Die Frage habe ich bereits in Posting 3 ausführlich beschrieben. Klick mich

    Ich kopier es nochmal:
    Also ich suche eine Lösung, die ein neues Compose-Fenster des am System voreingestellten Standard-Email-Programmes startet oder öffnet, bei dem dann gleich Subject und Body ausgefüllt ist und eben die Attachments dann schon dran hängen.

    Da das Programm auf unterschiedlichen Rechnern zum Einsatz kommt, hilft mir auch nicht ein selbst geschriebener SMTP-Emailer. Ich möchte schon, dass der User die Email ggf. selber ergänzen kann und dann selber abschickt.

    wir auf arbeit haben es entweder mit der blat.exe oder über die autoit smtp funktion gelöst, mails mit attachments automatisiert zu versenden!


    Genau sowas suche ich NICHT!

    Trotzdem danke und viele Grüße
    R@iner

  • Da das Programm auf unterschiedlichen Rechnern zum Einsatz kommt, hilft mir auch nicht ein selbst geschriebener SMTP-Emailer. Ich möchte schon, dass der User die Email ggf. selber ergänzen kann und dann selber abschickt.


    Du kannst doch auch selber eine gragische Emailoberfläche schreiben und dann sollte es gehen. Ich bin gerade nicht an meinem PC, aber wenn ich zuhause am PC bin, dann suche ich Dir gerne mal ein Entwurf raus. Aber das Forum hat auch Beispiele und ich meine das es GTA-Spider war, der ein solches bereits hier gepostet hat. Ist etwas länger her, aber es geht.

    Melde dich einfach, wenn o. g. Hilfe (ich suche die Datei raus) erwünscht ist. Okay?

    Gruß, Alina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich weiß nicht was Du meinst mit grafischer Oberfläche, aber ich will NICHT ein Email-Tool schreiben! Ich habe auch KEINE SMTP-Zugangsdaten!

    Ich will nur, dass ein "Neues Email-Fenster" des vom Benutzer voreingestellten Email-Programmes aufgeht, wo dann schon Empfänger, Betreff, Mail-Inhalt und ein Anhang bereits vorausgewählt bzw. gesetzt wurden, und zwar von mir. Genau sowas wie die Funktion _InetMail macht, nur um die Erweiterung, dass man Attachments anhängen kann, also quasi ein:

    _InetMailWithAttachments( $s_MailTo, $s_MailSubject, $s_MailBody , $s_MailAttachment).

    Viele Grüße und ein schönes Wochenende!
    R@iner

  • Ich will nur, dass ein "Neues Email-Fenster" des vom Benutzer voreingestellten Email-Programmes aufgeht, wo dann schon Empfänger, Betreff, Mail-Inhalt und ein Anhang bereits vorausgewählt bzw. gesetzt wurden, und zwar von mir. Genau sowas wie die Funktion _InetMail macht, nur um die Erweiterung, dass man Attachments anhängen kann, also quasi ein:

    _InetMailWithAttachments( $s_MailTo, $s_MailSubject, $s_MailBody , $s_MailAttachment).

    Dies stelle ich mir nicht so einfach vor, du müsstest dazu anhand der API des benutzten Mailprogrammes die Daten übewrgeben. Für Outlook hat ja water dies schon ihn eine UDF umgesetzt, aber für ale anderen müsstest du dir anhand der API die Routinen selbst schreiben bestenfalls im Netz zusammen suchen.

    mfg autoBert

  • Nein, ich will KEINE (Email-)produkt-spezifischen Lösungen bauen, da werde ich nicht mehr froh. Was meinst Du, wieviel verschiedene Email-Client es auf Windows-Systeme gibt?

    Ich suche sowas wie: Eine Datei mit der Maus selektieren, rechte Maustaste "Senden an" -> "Email-Empfänger". Das macht exakt das, was ich suche, nämlich ein neues Email-Fenster auf, des im System voreingestellten Default-Email-Clients. Und dabei spielt es überhaupt keine Rolle, welcher Email-Client installiert ist. Ich bin nur noch nicht dahinter gestiegen, wie man diesen Aufruf programmtechnisch lösen kann, also ohne Mausklicks!

    In Posting 13 habe ich eventuell nen Ansatz gefunden, hab nur noch keinen Plan, wie ich das in AutoIt angehen muss.

    happy computing
    R@iner