Seite 1 von 1
Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 08:56
von SteeWeeDee
Hallo Python Gemeinde!
Ich habe ein Script geschrieben, das Daten ausliest (funktioniert und hat mit der Problemstellung nichts zu tun). Nun möchte ich diese Daten in eine E-Mail packen. Das Problem ist nur, dass ich nicht weiß, wie ich Outlook aufrufe.
Es gibt Tutorials, die die Mail auch sofort versenden mit CC und Attachments usw. Das geht mir schon zu weit. Es sollte nur Outlook geöffnet werden und dort eine Rohfassung einer Mail erstellt werden - also das Fenster, dass man erhält, wenn man auf "New E-Mail" klickt. Anschließend soll der Inhalt einer Datei(text.txt) als Text eingefügt werden. To:, CC: und alles Weitere wird per Hand eingegeben.
Kann jemand helfen?
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 09:03
von ichisich
Hi,
auf die Schnelle hab ich das gefunden ...
http://blog.gungfu.de/archives/2006/12/ ... rschicken/
Schon etwas älter von daher gibts vielleicht auch andere Ansätze !?
Gruß
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 09:38
von SteeWeeDee
Der wirft bei mir leider einen Fehler, hatte es auch schon mal versucht und bin jetzt auf der Suche nach Alternativen:
#$language = "Python"
#$interface = "1.0"
import win32com.client
def main():
send_mail_via_com("Text", "Test", "
text@test.com")
def send_mail_via_com(text, subject, recipient, profilename="Outlook2003"):
s = win32com.client.Dispatch("Mapi.Session")
o = win32com.client.Dispatch("Outlook.Application")
s.Logon(profilename)
Msg = o.CreateItem(0)
Msg.To = recipient
Msg.CC = "WeitereAdressaten"
Msg.BCC = "Mailadresse"
Msg.Subject = subject
Msg.Body = text
#Anhang1 = "Pfad zum Anhang1"
#Anhang2 = "Pfad zum Anhang2"
#Msg.Attachments.Add(Anhang1)
#Msg.Attachments.Add(Anhang2)
#Msg.Send()
Fehler:
s = win32com.client.Dispatch("Mapi.Session")
COM Error: Invalid Class String(0x - 7ffbfe0d)
Eine andere Idee?
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 09:49
von SteeWeeDee
Habe nun mit os.systemos.system("start outlook.exe /c ipm.mail") das Outlook aus dem Script heraus starten können und eine neue Mail geöffnet. Jetzt fehlt nur noch das Einfügen des Textes (text = "" vielleicht?)
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 11:11
von ichisich
Ohje os.system ...
Da werden sich gleich die ein oder anderen melden ....
Das Modul ist veraltet und sollte nicht mehr genutz werden. Gib den begriff mal hier in die Forumsuche ein um dich zu informieren.
Statt dessen nimm das subprocess modul ...
Wie Du den Text für eine neue Mail an Outlook übergibst weiß ich leider so auch nicht. Denke aber das läßt sich googlen, bingen oder was auch immer.
Gruß
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 12:04
von /me
ichisich hat geschrieben:Ohje os.system ...
Da werden sich gleich die ein oder anderen melden ....
Das Modul ist veraltet und sollte nicht mehr genutz werden.
Es scheint mir wichtig, hier erst einmal die Begriffe zu klären.
os.system ist kein Modul.
os ist ein Modul.
Jetzt stellen wir den Begriff "veraltet" noch ins richtige Licht. Das Modul
os ist definitiv nicht veraltet. Die Funktion
os.system ist auch nicht veraltet (weder unter Python 2.7, noch unter 3.1). Das subprocess-Modul bietet allerdings deutlich mehr Kontroll- und Zugriffsmöglichkeiten. Da früher oder später sehr viele Anfragen dort landen, wo die Benutzung des subprocess-Moduls praktischer ist, wird folglich sowohl hier im Forum wie auch in der Dokumentation die Verwendung des
subprocess-Moduls statt der
os.system-Funktion empfohlen.
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Montag 8. November 2010, 12:12
von ichisich
Alles klar !
Danke für die Richtigstellung.
Gruß
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Dienstag 9. November 2010, 09:00
von Rainier
Wenn ich es richtig verstanden habe, soll ja nur das Mailsende-Fenster mit einem bestehendem Body aufgerufen werden.
Da brauch nur über den subprocess als Statement folgendes eingegeben werden:
Code: Alles auswählen
import subprocess
text = '''
Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.
Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.
'''.replace(" ", "%20").replace("\n","%0d")
subprocess.Popen("start mailto:?body=" + text, shell=True)
Man kann das natürlich auch noch verbinden mit der Betreffzeile oder cc wie folgt:
Code: Alles auswählen
mailto:?cc=name@domain&subject=Testmail&body=Blablabla
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Dienstag 21. August 2012, 07:24
von raumteiler
Hallo,
ich bin neu hier und habe ein ähnliches Problem.
Den Script habe ich so abgeändert:
Code: Alles auswählen
import subprocess
recipient="name@domain.com"
subject="Betreff"
text = '''Mailtext Zeile 1.
Mailtext Zeile 2.
'''.replace(" ", "%20").replace("\n","%0d")
subprocess.Popen("start mailto:"+recipient+"?body="+ text , shell=True)
Nun möchte ich in der neuen Mail noch die Betreffzeile ausfüllen, leider klappt das nicht. Kann mir bitte jemand helfe.
Danke Michael
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Dienstag 21. August 2012, 07:45
von /me
raumteiler hat geschrieben:Nun möchte ich in der neuen Mail noch die Betreffzeile ausfüllen, leider klappt das nicht.
Da du nicht geschrieben hast was du ausprobiert hast werfe ich einfach mal eine Idee rein. Vielleicht gibt es ja neben
body auch noch
subject als Parameter.
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Dienstag 21. August 2012, 09:08
von raumteiler
Hallo /me,
entschuldige bitte, natürlich habe ich schon einige Varianten ausprobiert. Es gibt den Paramter subject, aber er funktioniert nicht zusammen mit body. Wenn ich den Paramter Subject einfüge, dann wird der Mailtext nicht mehr in den Body eingefügt, die Mail hat dann nur noch die Outlookstandardsignatur.
Folgende Sachen habe ich probiert:
Code: Alles auswählen
subprocess.Popen("start mailto:"+recipient+"?subject="+subject+"&body="+ text , shell=True)
In diesem Fall kommt der Betreff richtig aber der Mailtext nicht, nur die Signatur
Code: Alles auswählen
subprocess.Popen("start mailto:"+recipient+"?subject="+subject+"?body="+ text , shell=True)
In diesem Fall kommt als Betreff: "Betreff?body=Mailtext Zeile 1."
Ich habe den Eindruck er akzeptiert nur einen Parameter.
Grüße
Michael
Re: Microsoft Outlook in einem Python Script öffnen
Verfasst: Dienstag 21. August 2012, 16:31
von lunar
@raumteiler Mit "shell=True" selbst Du selbst dafür, dass Dein Kommando von der Shell interpretiert wird. Da sollte es Dich dann nicht überraschen, dass ein Kommando, welches ein Sonderzeichen der Shell enthält, nicht richtig funktioniert. Das kaufmännische Und ist ein solches Sonderzeichen.
Lese die Dokumentation des "subprocess"-Moduls, um herauszufinden, wie Du Dein Kommando so formulieren kannst, so dass "shell=True" nicht mehr benötigt wird und Dein Kommando auch mit kaufmännischem Und korrekt funktioniert.