0

プログラムで次の関数を使用してメールを送信しています。

def send_email(subject, sender, recipients, text_body):
    FILE_TYPES = set(['txt', 'doc', 'docx', 'odt', 'pdf', 'rtf', 'text', 'wks', 'wps', 'wpd'])
    form = ApplicationForm (request.files)
    submit_name = form.file_upload.data.filename
    mail = Mail(app)
    msg = Message(subject, sender=sender, recipients=recipients)
    msg.body = text_body
    if '.' in submit_name and submit_name.rsplit('.', 1)[1] in FILE_TYPES:
        filename = secure_filename(submit_name)
        form.file_upload.data.save('uploads/' + filename)
        with app.open_resource(filename) as fp:
            msg.attach(filename, fp.read())
            mail.send(msg)

電子メールは正常に機能し、正しいユーザーに送信されますが、添付ファイルは送信されません。添付ファイルはフォームからのものであるため、これを間違って参照している可能性があります。

以下の機能を使用して添付ファイルを保存しましたが、これは正常に機能するため、上記が機能しない理由がわかりません。誰か助けてもらえますか?

if '.' in submit_name and submit_name.rsplit('.', 1)[1] in FILE_TYPES:
    filename = secure_filename(submit_name)
    form.file_upload.data.save('uploads/' + filename)
    return redirect('home')

編集:受信したエラーメッセージを送信しようとすると:

[Errno 2] No such file or directory: 'C:\\Users\\richard.danvers\\application\\answer.docx'

「アップロード」がパスに含まれていないように見えますが、これを含める方法を知っている人はいますか?

4

2 に答える 2

0

ファイルを添付する前にメールを送信しています:

mail.send(msg)
if '.' in submit_name and submit_name.rsplit('.', 1)[1] in FILE_TYPES:
    ...
于 2016-12-14T12:24:56.880 に答える
0

コンテンツ タイプは、msg.attach 引数内で指定する必要があります。

例: 「テキスト/プレーン」

于 2016-12-19T11:52:49.500 に答える