0

我有一个带有通知模块的 web.py 项目 - 系统将通过发送 HTML 格式的电子邮件通知用户。

我知道如何在 python 中发送 HTML 格式的电子邮件。(也在这个带有 HTML 消息的 Q sendmail 中描述),并且还知道 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() 函数。

4

2 回答 2

1

发送 html 邮件,在 headers 中添加一个键:

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 = {}
于 2012-06-21T02:31:26.673 回答
0

我从 web.py 的 help(web.sendmail) 中得到它!

>>> import web
>>> help(web.sendmail)

关于模块 web.utils 中函数 sendmail 的帮助:

sendmail(from_address, to_address, subject, message, headers=None, **kw)

使用 from到withmessage的邮件和信封标头发送电子邮件。可以使用字典 `headers.xml 指定其他电子邮件标题。from_address_to_addresssubject

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

作为@number23_cn 的回答,只需将此键 'Content-Type' 添加到 headers 即可。

于 2012-06-21T06:04:23.127 回答