2016-10-29 4 views
2

フラスコ-WTF経由でファイルをアップロードして、私が手にエラーがそれを添付して電子メールを送信するための理想的な結果は次のようになりAttributeError: 'FileField' object has no attribute 'startswith'あるフラスコWTFをフラスコ郵便に添付しますか?

def careers(): 
    form = CareersForm() 

    if form.validate_on_submit(): 
     msg = Message('my subject for message', sender = MAIL_USERNAME, recipients = [company_email]) 
     msg.html = "My message" 
     with app.open_resource(form.resume) as fp: 
      msg.attach("resume.pdf", "application/pdf", fp.read()) 
     mail.send(msg) 

    return render_template('default/careers.html',form=form) 

フラスコメールを使用して、それを郵送します。

答えて

2

このプログラムは、ファイルをアップロードして電子メールメッセージに添付します。電子メールサーバーの設定はsettings.pyに格納されます。

#!/usr/bin/env python 

from flask import Flask, render_template_string 
from flask_wtf import FlaskForm 
from wtforms import StringField, validators 
from flask_wtf.file import FileField 
from flask_mail import Mail, Message 

app = Flask(__name__) 
app.config.from_object('settings') 
mail = Mail(app) 


class FileForm(FlaskForm): 
    file_ = FileField('Some file') 
    addr = StringField('Address', [validators.InputRequired()]) 


@app.route('/', methods=['GET', 'POST']) 
def root(): 
    form = FileForm() 
    if form.validate_on_submit(): 
     msg = Message(
      'Sending file', 
      sender=form.addr.data.strip(), 
      recipients=[form.addr.data.strip()]) 
     msg.body = 'Sending file %s' % (form.file_.name) 
     msg.attach(
      form.file_.data.filename, 
      'application/octect-stream', 
      form.file_.data.read()) 
     mail.send(msg) 
     return "Sent" 

    return render_template_string(''' 
     <html><body><form method="post" enctype="multipart/form-data"> 
      {{ form.hidden_tag() }} 
      {{ form.addr.label }}: {{ form.addr() }}<br/> 
      {{ form.file_.label }}: {{ form.file_() }}<br/> 
      <input type="submit" value="Click Me!"/> 
     </form></body></html>''', form=FileForm()) 

if __name__ == '__main__': 
    app.run(debug=True) 
+2

これらの種類のデモを作成していただきありがとうございますが、これは実際には役に立たないようです。なにが問題だったの?何がここでそれを修正した?完全なデモを作成することに加えてそれに対処してください。 – davidism

+0

投稿の限られた情報から問題を診断できませんでした。それ以外は、私はOPの質問が「私は間違っていますか?」ではないと推測しました。むしろ「どのように私はフラスコから電子メールを送るのですか?」と答えました。 –

+3

[OK]をクリックすると、どのようにしてメールを送信しますか?ソリューションを説明し、コードをダンプしないでください。 – davidism

関連する問題