如何在web2py中附加上传的文件以进行电子邮件发送

时间:2017-11-04 15:08:52

标签: python-2.7 web2py

所有

Python和web2py新手在这里 - 我试图通过电子邮件转发用户输入(电子邮件地址和文件),一旦用户在网站上传信息。 用户提供的信息存储在数据库中,但它仍然是我从数据库中获取文件并通过电子邮件转发它。任何指针都非常赞赏!

这是我的控制器动作 -

def careers():
    form = SQLFORM(db.cv_1, formstyle='bootstrap3_stacked')
    for label in form.elements('label'):
        label["_style"] = "display:none;"
    form.custom.submit.attributes['_value'] = 'Submit CV'
    if form.process().accepted:
        applicant = str(form.vars.email)
        mail.send(to=['email@company.com'], message= applicant + ' new CV', subject='CV submission', attachment=mail.Attachment('/path/to/file'))
    return dict(form=form)

这是数据库模型

db.define_table('cv_1', Field('email',
requires=IS_EMAIL(error_message='Please provide your e-mail'),
widget=widget(_placeholder='Your e-mail (required)',_readonly=False)),
Field('cv', 'upload', autodelete=True, requires=[IS_LENGTH(1048576,1024),
IS_UPLOAD_FILENAME(extension='pdf')]))

1 个答案:

答案 0 :(得分:0)

上传文件的转换文件名将在form.vars.cv中(这是存储在数据库中db.cv_1.cv字段中的值)。您可以将其与字段的.retrieve方法一起使用,以获取完整文件路径或文件对象本身:

original_filename, filepath = db.cv_1.cv.retrieve(form.vars.cv)
mail.send(to=['email@company.com'], message=applicant + ' new CV',
          subject='CV submission',
          attachment=mail.Attachment(filepath, original_filename))