如何在 web2py 中附加上传的文件以发送电子邮件
How to attach an uploaded file for e-mailing in 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')]))
上传文件的转换文件名将在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))
全部,
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')]))
上传文件的转换文件名将在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))