2010-12-09 27 views
3

ファイルに電子メールを添付する方法の例はたくさんありますが、MIMEBaseインスタンスを添付する方法の例は見つかりません。django電子メールに添付ファイル

docs:添付ファイルから「これらはemail.MIMEBase.MIMEBaseインスタンスまたは(ファイル名、コンテンツ、MIMEタイプ)トリプルのいずれかです。」

だから、僕は細かい機能でのiCalファイルを生成しています:

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

はデフのiCal(の終わりにこのコードを試してみてください):

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

関連する問題