【发布时间】:2010-06-17 06:37:37
【问题描述】:
我正在尝试编写一个 Python 函数来使用默认安装的邮件客户端向用户列表发送电子邮件。我想打开电子邮件客户端,让用户有机会编辑用户列表或电子邮件正文。
我做了一些搜索,根据这里:
http://www.sightspecific.com/~mosh/WWW_FAQ/multrec.html
将多个以逗号分隔的收件人放在 mailto 链接中显然违反了 RFC 规范。然而,其他人似乎都是这样做的。对此的现代立场究竟是什么?
总之,我找到了以下两个网站:
- http://2ality.blogspot.com/2009/02/generate-emails-with-mailto-urls-and.html
- http://www.megasolutions.net/python/invoke-users-standard-mail-client-64348.aspx
这似乎建议使用 urllib.parse(对我来说是 url.parse.quote)和 webbrowser.open 的解决方案。
我尝试了第一个链接 (2ality.blogspot.com) 中的示例代码,效果很好,并打开了我的默认邮件客户端。但是,当我尝试在自己的模块中使用代码时,由于某种奇怪的原因,它似乎打开了我的默认浏览器。地址栏中没有有趣的文字,它只是打开了浏览器。
email_incorrect_phone_numbers() 函数位于Employees 类中,该类包含Employee 对象的字典(employee_dict),这些对象本身具有许多员工属性(sn、givenName、mail 等)。完整代码其实在这里(Python - Converting CSV to Objects - Code Design)
from urllib.parse import quote
import webbrowser
....
def email_incorrect_phone_numbers(self):
email_list = []
for employee in self.employee_dict.values():
if not PhoneNumberFormats.standard_format.search(employee.telephoneNumber):
print(employee.telephoneNumber, employee.sn, employee.givenName, employee.mail)
email_list.append(employee.mail)
recipients = ', '.join(email_list)
webbrowser.open("mailto:%s?subject=%s&body=%s" %
(recipients, quote("testing"), quote('testing'))
)
有什么建议吗?
干杯, 维克多
【问题讨论】: