我有一个带通知模块的web.py项目 - 系统会通过发送HTML格式的电子邮件来通知用户。
我知道如何在python中发送HTML格式的电子邮件。(另请参阅此Q sendmail with HTML message),并且还知道web.py(版本0.37)中的sendmail()函数。
import web
web.config.smtp_server = 'smtp.gmail.com'
web.config.smtp_port = 587
web.config.smtp_username = 'goooooooooooooogle@gmail.com'
web.config.smtp_password = '*********'
web.config.smtp_starttls = True
web.sendmail('goooooooooooooogle@gmail.com',['1361877@gmail.com'],'Hello nodexy','This email is from web.py !')
我期待:
web.sendmail('goooooooooooooogle@gmail.com',['1361877@gmail.com'],'Hello nodexy', '<html><img src="hello.png"/></html>')
现在我该如何在web.py中修复此问题?我确定无法将HTML字符串设置为sendmail()函数。
答案 0 :(得分:1)
发送html邮件,在标题中添加一个键:
web.sendmail(from_address, to_address, subject, msg, headers={'Content-Type':'text/html;charset=utf-8'})
web.py utils.py中的,请参阅_EmailMessage的prepare_message方法:
def prepare_message(self):
for k, v in self.headers.iteritems():
if k.lower() == "content-type":
self.message.set_type(v)
else:
self.message.add_header(k, v)
self.headers = {}
答案 1 :(得分:0)
我是从web.py中的帮助(web.sendmail)获得的。
>>> import web
>>> help(web.sendmail)
模块web.utils中的函数sendmail帮助:
sendmail(from_address, to_address, subject, message, headers=None, **kw)
使用邮件和信封标题发送电子邮件message
从from_address_
到to_address
subject
。
可以使用字典指定其他电子邮件标头
`头。
可选择将cc,bcc和附件指定为关键字参数。 附件必须是可迭代的,每个附件可以是a 文件名或文件对象或具有文件名,内容和字典的字典 可选的content_type键。
作为@ number23_cn的回答,只需将此键'Content-Type'添加到标题中。