如何在自动发送的邮件正文中插入数据库表中的客户姓名字段
如何在自动发送的邮件正文中插入数据库表中的客户姓名字段
嘿,我看你已经在搭建自动发货通知邮件的功能了,现在想把邮件开头固定的“Dear Customer”换成数据库里对应的客户真实姓名,对吧?其实这个需求实现起来很简单,咱们基于你现有的代码来调整就行:
首先,我注意到你在GetOrders方法里已经把Name字段加入到了fields列表中,而且也从数据库查询结果里提取了这个字段的值,所以数据源这块已经没问题了~接下来只需要在邮件正文模板里把客户名字插进去就行:
- 修改邮件正文的模板字符串,把原来的
Dear Customer换成占位符%s,这样就能动态替换成具体的客户姓名; - 在格式化字符串的时候,把客户姓名和原来的PO编号一起作为参数传进去。
修改后的WriteEmailBody函数代码如下:
def WriteEmailBody(o, f): body = """<p><i>Dear %s,</i></p> <p><i>This message serves to notify you that your order has shipped. Please keep an eye on your email PO <b>%s</b> for shipping updates.</i></p> """ % (o[f.index('Name')], o[f.index('ponum')]) body += "<p><i>CS</i></p>" return body
简单解释一下:
- 我们给模板加了两个
%s占位符,第一个对应客户姓名,第二个对应PO编号; - 格式化的时候用元组
(o[f.index('Name')], o[f.index('ponum')])来传递这两个值,这样邮件开头就会变成Dear Jane Bennett,或者Dear John Wickham,,完全根据订单对应的客户信息来动态生成啦。
最后再提醒一句:记得确认你的Shipped.sql查询语句确实返回了客户姓名的列哦,不然Name字段会取不到正确的值,影响邮件效果~
备注:内容来源于stack exchange,提问作者Jade
相关产品推荐
相关产品推荐

