2010-12-09 10 views
3

Es gibt viele Beispiele, wie Sie eine Datei an eine E-Mail anhängen können, aber ich kann kein Beispiel finden, wie eine MIMEBase-Instanz angehängt wird.Eine ical-Datei an eine Django-E-Mail anhängen

Aus den Dokumenten: Anlagen "Diese können entweder E-Mail.MIMEBase.MIMEBase-Instanzen oder (Dateiname, Inhalt, Mimetyp) Tripel sein."

So erzeugen, ich bin eine iCal-Datei in einer Funktion einfach gut:

def ical() 
    cal = vobject.iCalendar() 
    cal.add('method').value = 'PUBLISH' # IE/Outlook needs this 

    vevent = cal.add('vevent') 
    vevent.add('dtstart').value = self.course.startdate 
    vevent.add('dtend').value = self.course.startdate 
    vevent.add('summary').value='get details template here or just post url' 
    vevent.add('uid').value=str(self.id) 
    vevent.add('dtstamp').value = self.created 

    icalstream = cal.serialize() 
    response = HttpResponse(icalstream, mimetype='text/calendar') 
    response['Filename'] = 'shifts.ics' # IE needs this 
    response['Content-Disposition'] = 'attachment; filename=shifts.ics' 
    return response 

Aber das funktioniert nicht:

myicalfile = ical() 
    message.attach(myicalfile) 
+0

Wie genau wird myicalfile Variable erstellt? Ist es wirklich eine email.MIMEBase.MIMEBase-Instanz? – edgars

+0

Haben Sie bearbeiten, um es klarer zu machen, wo myicalfile herkommt und nein, es ist keine emailMIMEBase, da ich nicht weiß, wie man es macht! – PhoebeB

Antwort

2

diesen Code Versuchen am Ende def ische():

from email.mime.text import MIMEText 
part = MIMEText(icalstream,'calendar') 
part.add_header('Filename','shifts.ics') 
part.add_header('Content-Disposition','attachment; filename=shifts.ics') 
return part 

Natürlich sollte der Importcode am Anfang der Datei verschoben werden, um den Codierungsstandards zu entsprechen.

+0

Das funktioniert perfekt. Vielen Dank! – PhoebeB

+0

Wie kann ich diese an bestimmte E-Mail-Adresse senden? – Gaurav

Verwandte Themen