knurrhahn
Goto Top

Senden "an Mail Empfänger" per Batchfile individualisieren

Wenn man unter Windows eine Datei rechts anklickt, gibt es (wenn alles richtig funktioniert!) die Option, sie per E-Mail zu versenden. Eigentlich eine gute Sache, wenn sie nicht so unflexibel wäre und wenn uns der standartmäßige Email Client nicht mit Binsenweisheiten beglücken würde, wie "Folgende Dateien oder Links können jetzt als Anlage mit Ihrer Nachricht gesendet werden:"

Der Menu-Eintrag, der diese Option anbietet, ist im Verzeichnis "%appdata%\Microsoft\Windows\SendTo" als Datei "Mail Recipient.MAPIMail" bzw. "E-Mail-Empfänger.MAPIMail" abgelegt.

Die Idee ist nun, diese Datei durch einen Link auf eine oder sogar mehrere Batch-Dateien - für jedes Mailprogramm eine - zu ersetzen.

Die Vorteile:
- ich habe die Auswahl, welchen Mail-Client ich jeweils benutzen möchte
- ich kann die Vorgaben für "Betreff", "E-Mail-Text" etc. frei bestimmen
- ich muss nicht in der Registry herummurkeln
- die Scripts dazu sind denkbar einfach
- ich kann beliebige andere Optionen hinzufügen, z.B. "Mail per Firefox": 1. PDF-Verzeichnis (Ablageort der zu versendenden Datei) öffnen, 2. Firefox mit meinem MailPortal öffnen für manuelle Ausführungen.

Der Vorgang: Ich erstelle (eine) entsprechende Batch-Datei(en) und lege den/die Link(s) darauf im Verzeichnis "%appdata%\Microsoft\Windows\SendTo" ab. Anschließend benenne ich sie um in z.B. "Mail per Outlook" oder "Mail per Thunderbird". Diese Namen erscheinen dann als Option(en) im Rechts-Klick-Menu jeder beliebigen Datei.

Beispiel Outlook: (ablegen als "outmail.bat")
@echo off

rem Uebernimmt die Pfadbezeichnung zu dieser Datei:
set filepath=%1

start outlook.exe /a "%filepath%"  
startet Outlook mit der Datei im Anhang.

Beispiel Thunderbird: (ablegen als "thundmail.bat")
@echo off

rem Uebernimmt die Pfadbezeichnung zu dieser Datei:
set filepath=%1    

rem Uebernimmt den Namen dieser Datei
for %%F in ("%filepath%") do set filename=%%~nxF   

"C:\Program Files\Mozilla Thunderbird\thunderbird.exe" -compose "to='',subject='%filename%',preselectid='id1',body='',attachment='%filepath%'"  
startet Thunderbird mit der Datei im Anhang und dem Dateinamen im Betreff.

Viel Spass beim Experimentieren!

Gruß
knurrhahn

Content-ID: 671558

Url: https://administrator.de/tutorial/senden-an-mail-empfaenger-per-batchfile-individualisieren-671558.html

Ausgedruckt am: 22.02.2025 um 05:02 Uhr

mediodia
mediodia 21.02.2025 aktualisiert um 16:33:35 Uhr
Goto Top
Als Ergänzung:

Outlook (Classic) lässt sich ja auch per COM ansprechen da kann man dann auch sämtliche Eigenschaften der Mail vorher nach Gusto anpassen, per Link zu einer VBS im SendTo Ordner z.B. so
With CreateObject("Outlook.Application").CreateItem(0)  
     .subject  = "Betreff hier"  
     .to = "user@domain.de"  
     .htmlbody = "Mailbody hier"  
     if wscript.Arguments.Count > 0 then
         for i = 0 to wscript.arguments.Count - 1
             .Attachments.Add wscript.arguments(i)
         next
     end if
     .Display
     ' to send directly instead of showing mail, comment the line above and uncomment the following  
     '.Send  
End with
Verfügbare Eigenschaften und Methoden können hier nachgeschlagen werden:
MailItem-Objekt (Outlook)

Gruß m.
knurrhahn
knurrhahn 21.02.2025 um 14:06:00 Uhr
Goto Top
Moin Mittach, (pardon - musste sein)

korrekt! face-smile

Gruß k.
Michi91
Michi91 21.02.2025 um 14:59:46 Uhr
Goto Top
Coole Idee, mir fällt gerade für uns kein Anwendungsfall ein, aber die Idee mag ich
mbehrens
mbehrens 21.02.2025 um 15:35:15 Uhr
Goto Top
Zitat von @mediodia:

Outlook lässt sich ja auch per COM ansprechen

Es fehlt die wichtige Ergänzung, dass dies nicht für das neue Outlook gilt face-wink
mediodia
mediodia 21.02.2025 um 16:33:51 Uhr
Goto Top
Zitat von @mbehrens:
Es fehlt die wichtige Ergänzung, dass dies nicht für das neue Outlook gilt face-wink
Done.
Globetrotter
Globetrotter 21.02.2025 um 20:40:36 Uhr
Goto Top
... oder man sendet das Ganze via Batch an Blat, der wiederum über ein Mailrelay oder direkten Mailserver ;)
... wer's braucht ;)

Gruss Globe!