2010-12-09 3 views
3

Есть много примеров того, как присоединить файл к электронной почте, но я не могу найти пример того, как подключить экземпляр MIMEBase.Прикрепление файла к файлу django

Из документов: вложения «Это могут быть либо экземпляры email.MIMEBase.MIMEBase, либо (имя файла, контент, mimetype)».

Так я генерация файла в ческих функции просто отлично:

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 

Но это не работает:

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

Как точно создается переменная myicalfile? Это действительно экземпляр email.MIMEBase.MIMEBase? – edgars

+0

Имейте править, чтобы сделать его более ясным, откуда приходит myicalfile, и нет, это не emailMIMEBase, поскольку я не понимаю, как это сделать! – PhoebeB

ответ

2

Попробуйте этот код в конце Защиты ческого():

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 

Конечно, код импорта должен быть перемещен в верхней части файла в соответствии со стандартами кодирования.

+0

Это работает отлично. Огромное спасибо! – PhoebeB

+0

как я могу отправить это на конкретный адрес электронной почты? – Gaurav