2012-01-25 7 views
0

FileFieldに保存されたファイルでメールを送信するにはどうすればよいですか?私は以下のコードでファイルにアクセスする方法を知らない。DjangoのFileFieldにファイルを保存するにはどうすればよいですか?

mail = EmailMessage(subject, message, '[email protected],com', ['[email protected]']) 
mail.attach(?, ?, 'application/pdf') 
mail.send() 

私は

list_pcaが

class ListPCA(models.Model): 
    pdf_file = models.FileField(upload_to=get_file_path_j, null=True, blank=True) 

のインスタンスですが、私はエラー「そのようなファイルを入手

f = list_pca.pdf_file.open(mode='rb') 

でファイルを開こうとしましたEDIT

パスが間違っているため、 "ディレクトリまたはディレクトリ"になります。

すぎ
list_pca.pdf_file.path 

リターン間違ったパスを。 upload_toオプションのおかげでファイルがどこにあるのかわからないのですか?

おかげ

おかげ

+0

質問を明確にすることはできますか?あなたが使っている言語などを説明してください。 – crockpotveggies

+0

タグに 'Django'がありますが、質問に追加します... – jul

+0

最初は重複のように見え、Googleがそれを手に入れるようになったので質問を助けます;)残念ながら私はできません専門知識を提供する:) – crockpotveggies

答えて

1
mail = EmailMessage(subject, message, '[email protected],com', ['[email protected]']) 
mail.attach('arbitrary_filename', myfile.read(), 'application/pdf') 
mail.send() 

あなたはEmailMessageのを使っているので、あなただけの添付ファイルも同様kwargそれを渡すことができます。

email = EmailMessage(subject, message, '[email protected],com', ['[email protected]'], 
    attachments=(('foo.pdf', myfile.read(), 'application/pdf'),)) 
0

私は、これはそれを行うだろうと思う:

mail.attach(os.path.basename(myfile.name), myfile.read(), 'application/pdf')

私はMIMEエンコードステップを見下ろすことかもしれないが、IIRCのmail.attachはそれを行います。

0

他の提案は動作するはずですが、あなたも行うことができます。

mail.attach_file(myfile.path) 

オプションで2番目の引数としてMIMEタイプを渡すことができますが、それだけにしようとしますあなたがそれを提供しないならば、ファイル名からそれを理解してください。

2

aganders3が提案のように通常、私が使用します。

mail.attach_file(myfile.path) as well 

しかし、私はそれがスペースを含む添付ファイルで失敗したことを指摘しました。

関連する問題