如何在python中只使用web.py发送邮件?

时间:2012-06-20 01:46:43

标签: python html sendmail web.py

我有一个带通知模块的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()函数。

2 个答案:

答案 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)

使用邮件和信封标题发送电子邮件messagefrom_address_to_address subject。 可以使用字典指定其他电子邮件标头 `头。

可选择将cc,bcc和附件指定为关键字参数。 附件必须是可迭代的,每个附件可以是a 文件名或文件对象或具有文件名,内容和字典的字典 可选的content_type键。

作为@ number23_cn的回答,只需将此键'Content-Type'添加到标题中。