我在Python中使用以下代码发送附带pdf的电子邮件。
result_url = '%s%s?analysis_id=%s' % (
constants.HOST_URL, reverse('results'), analysis.id)
pdf_filename = ''.join(['report', str(analysis_id), '.pdf'])
utils.convert_to_pdf(result_url, pdf_filename)
这是我的utils.convert_to_pdf
。
def convert_to_pdf(url, filename):
command = "phantomjs export.js %s %s" % (url, filename)
execute_command(command).communicate()
以下是我发送电子邮件的方式。
email_ids = []
if analysis.user is not None:
email_ids.append(analysis.user.email)
if email is not None:
email_ids.append(email)
body = ANALYSIS_EMAIL_BODY % (result_url)
try:
message = EmailMultiAlternatives(ANALYSIS_EMAIL_SUBJECT, body, settings.EMAIL_SENDER, email_ids)
message.attach('Report.pdf', pdf_filename, 'application/pdf')
message.send()
except Exception as ex:
logging.error('Send mail failed: %s', ex)
现在我看到PDF文件在我当前的文件夹中正确生成并附有邮件,但邮件大小为0KB,当我尝试打开它告诉的文件时。
It may be damaged or use a file format that preview doesn't recognize
这里出了什么问题。
答案 0 :(得分:0)
您只是附加文件名作为文件的内容。
您需要附加实际内容,而不是文件名。
message.attach('Report.pdf', read_pdf_contents(), 'application/pdf')
确定如何从文件名中获取原始数据是您的职责。
就像myfile_like_object.read()