Как перейти по электронной почте с вложениями - PullRequest
0 голосов
/ 31 марта 2019

Я создаю приложение, в котором пользователь заполняет форму и загружает файл. У меня нет проблем с сохранением данных формы запроса в базу данных или загрузкой файла.

Однако у меня возникают проблемы с получением этих данных в той же функции (request.form и загруженный файл) и отправкой по электронной почте.

Я пытался повторно использовать данные формы запроса для отправки сообщения электронной почты с объектом сеанса для сохранения файла и его прикрепления. Это работает, только если я использую только данные формы запроса (например, мою «свяжитесь с нами»).

Вот мой код:

def trial():
if request.method == 'POST':
    # Package and store new trial information
    new_trial = Organization(companytype=request.form['companytype'],
                             companyname=request.form['companyname'],
                             firstname=request.form['firstname'],
                             lastname=request.form['lastname'],
                             email=request.form['email'],
                             username=request.form['email'],
                             password=request.form['password'],
                             referrer=request.form['referrer'])

    # Package to save file
    file = request.files['file']
    if file and allowed_file(file.filename):
        filename = file.filename
    file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    # Save file to Session
    s.f = filename
    # Send Form information in Email
    msg = Message(
        body="Company Name: {}\nReferrer: {}\nTrial Email: {}".format(
            request.form['companyname'], request.form['referrer'], request.form['email']
        ),
        subject="Contact regarding: {}".format(request.form['subject']),
        recipients=[app.config['MAIL_USERNAME'], request.form['email']],
        attachments=[s.f]
    )
    session.add(new_trial)
    session.commit()
    mail.send(msg)
    return redirect(url_for('trial_success'))
else:
    return render_template('signup.html')

Это должно перенаправить на страницу trial_success, но вместо этого я получаю:

Неверный запрос

Браузер (или прокси-сервер) отправил запрос, который этот сервер не может понять.

Заранее спасибо!

...