Hi,
ich möchte Outlook-Termine direkt aus dem Djangobackend verschicken.
Über django.core.mail kann ich relativ leicht Mails verschicken, indem ich mich mit unserem Exchange-Server verbinde, aber ich finde nichts für Termine.
Hat da jemand eine Idee?
LG
Outlook-Termine aus Django heraus verschicken
-
- User
- Beiträge: 439
- Registriert: Mittwoch 8. August 2018, 16:42
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Ein Outlook-Termin ist nichts anderes als eine Email mit einem Kalendereintrag als Attachement.
Ein bisschen Suchen liefert z.B. dieses Beispiel:
https://www.baryudin.com/blog/entry/sen ... ts-python/
Ein bisschen Suchen liefert z.B. dieses Beispiel:
https://www.baryudin.com/blog/entry/sen ... ts-python/
-
- User
- Beiträge: 439
- Registriert: Mittwoch 8. August 2018, 16:42
Danke dir. Sieht ein bisschen nach Frickelei aus. Mal schauen, wie ich da durch komme.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
-
- User
- Beiträge: 439
- Registriert: Mittwoch 8. August 2018, 16:42
Also die Mail wird verschickt und es beinhaltet auch ein Meeting, welches man zum Kalender hinzufügen kann, jedoch sieht das anders aus, als wenn ich ein Meeting direkt aus outlook verschicke.
Es wird eher eine Datei verschickt, die heißt:
Es wird eher eine Datei verschickt, die heißt:
not supported calendar message.isc
Code: Alles auswählen
import icalendar
from email.encoders import encode_base64
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
import smtplib
import datetime as dt
import pytz
tz = pytz.timezone("Europe/Berlin")
start = tz.localize(dt.datetime.combine(dt.date(2021,7,10), dt.time(10,15)))
end = tz.localize(dt.datetime.combine(dt.date(2021,7,10), dt.time(11,15)))
timestamp = tz.localize(dt.datetime.combine(dt.date(2021,7,10), dt.time(0,10)))
# Build the event itself
cal = icalendar.Calendar()
cal.add('prodid', 'HalloHalloHallo')
cal.add('version', '2.0')
cal.add('method', "REQUEST")
event = icalendar.Event()
event.add('attendee', 'empfaenger@outlook.de')
event.add('organizer', 'absender@outlook.de')
event.add('status', "confirmed")
event.add('category', "Event")
event.add('summary', 'Ein kleiner Test.')
event.add('description', 'Hier steht ein sehr langer Text, der alles genau beschreibt')
event.add('location', 'Berlin')
event.add('dtstart', start)
event.add('dtend', end)
event.add('dtstamp', timestamp)
event.add('priority', 5)
event.add('sequence', 1)
event.add('created', tz.localize(dt.datetime.now()))
# Add a reminder
alarm = icalendar.Alarm()
alarm.add("action", "DISPLAY")
alarm.add('description', "Reminder")
# The only way to convince Outlook to do it correctly
alarm.add("TRIGGER;RELATED=START", "-PT{0}H".format(1))
event.add_component(alarm)
cal.add_component(event)
# Build the email message and attach the event to it
msg = MIMEMultipart("alternative")
msg["Subject"] = 'Ich bin die Ueberschrift'
msg["From"] = 'absender@outlook.de'
msg["To"] = 'empfaenger@outlook.de'
msg["Content-class"] = "urn:content-classes:calendarmessage"
msg.attach(MIMEText('Herzlich Willkommen! Das ist der Emailtext.') )
filename = "invite.ics"
part = MIMEBase('text', "calendar", method="REQUEST", name=filename)
part.set_payload( cal.to_ical() )
encode_base64(part)
part.add_header('Content-Description', filename)
part.add_header("Content-class", "urn:content-classes:calendarmessage")
part.add_header("Filename", filename)
part.add_header("Path", filename)
msg.attach(part)
# Send the email out
mailServer = smtplib.SMTP('smtp-mail.outlook.com', 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login('absender@outlook.de', 'xxxx')
mailServer.sendmail(msg["From"], [msg["To"]], msg.as_string())
mailServer.close()
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"