E-Mail ab Vertec automatisch versenden

Produktlinien: Expert
Module: Leistung & CRM
Erstellt: 03.02.2017, Änderung:
SMTP Script geändert bei email_text
Mehr ansehen

Mittels Script ist es möglich, E-Mails automatisch zu versenden. Sei das über ein registriertes Script, welches manuell ausgelöst wird, via Aufgabe oder via Event-Script.

Dies geschieht normalerweise via Zugriff über COM auf den lokalen E-Mail Client, z.B. Microsft Outlook, wie in nachfolgendem VB Script Beispiel:

E-Mail versenden via lokalem Standard-E-Mail-Programm

Set myMail = CreateObject("CDO.Message")

myMail.To = Teamleader.Member("briefEmail")
myMail.Subject = "Teamauswertung: " + Teamleader.Member("kuerzel") + ", " + CStr(VonDatum) + " bis " + CStr(BisDatum)
myMail.TextBody = MailText

myMail.AddAttachment FileName
myMail.Send

Set myMail = Nothing

Um diese Funktionalität nutzen zu können, muss ein Standard-E-Mail-Programm auf Ihrem Computer definiert sein.

Das funktioniert aus der Desktop App einwandfrei.

Bei der Cloud App läuft das Script auf dem Server und kann als COM Client MS Outlook zwar aufrufen, es gibt dabei jedoch Unbekannte, wie: Darf die VertecSession.exe überhaupt etwas interaktives aufrufen (viele Services dürfen das nicht)?, oder: Welches Profil wird im Outlook verwendet? - Outlook wird unter den Credentials aufgestartet, mit dem der Cloud Server läuft. In der Web App läuft ein solches Script gar nicht.

Um diese Probleme zu umgehen, können E-Mails auch direkt via SMTP versendet werden, unter Verwendung des smtplib Moduls von Python. Hier nachfolgend ein Python Beispiel mit Googlemail SMTP:

E-Mail versenden via SMTP

# coding: windows-1252

import smtplib

#Absender Details
mail_user = 'USER'
mail_password = 'PASSWORD'

aktivitaet = argobject
zustaendiger = aktivitaet.zustaendig

#Email Inhalt
sender = mail_user
to = zustaendiger.eval("briefEmail")

subject = "Neue Aktivität für: " + zustaendiger.kuerzel
body = "Projekt: %s \n Termin: %s \n Titel: %s \n Text: %s" % (aktivitaet.projekt, aktivitaet.termin, aktivitaet.titel, aktivitaet.text)

email_text = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (sender, ", ".join(to), subject)) + body

#Mailserver Details
try:
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    server.ehlo()
    server.login(mail_user, mail_password)
    server.sendmail(sender, to, email_text)
    server.close()

    print 'Versand erfolgreich!'
except:
    print 'Versand nicht möglich!'