我正在尝试编写一个Python函数,使用默认安装的邮件客户端将电子邮件发送到用户列表.我想打开电子邮件客户端,并让用户有机会编辑用户列表或电子邮件正文.
我做了一些搜索,并根据这里:
http://www.sightspecific.com/~mosh/WWW_FAQ/multrec.html
显然违反了RFC规范,将多个以逗号分隔的收件人放在mailto链接中.然而,这就是其他人似乎都在这样做的方式.这个现代立场究竟是什么?
无论如何,我发现了以下两个网站:
> 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 quoteimport 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')) )
有什么建议?
干杯,
胜利者最佳答案好吧,既然你提出了建议:忘记mailto:scheme和webbrowser,并使用Python的smtplib模块编写一个小的SMTP客户端.它是标准的,完全支持所有系统,并且文档中包含一个示例,您几乎可以从中复制和粘贴部分.
当然,如果您使用smtplib,则必须要求用户提供要使用的SMTP服务器的详细信息(主机名和端口,可能还有登录名/密码).这无疑是不方便的,所以我可以看到你为什么要委托系统上的现有程序来处理电子邮件.问题是,没有与系统无关的方法.即使是webbrowser模块也无处不在;有些人使用模块无法检测默认(或任何)浏览器的系统,即使可以,当你提供mailto:链接时,会发生什么,完全取决于浏览器.
如果您不想或不能使用SMTP,最好的办法是编写一个能够在尽可能多的不同系统上检测和打开默认电子邮件客户端的自定义模块 – 基本上是webbrowser模块的功能,除了电子邮件客户端而不是浏览器.在这种情况下,您需要确定用户已安装的邮件客户端类型,并确保您支持这些邮件客户端.如果你足够彻底,你可能可以在PyPI(Python包索引)上发布你的模块,甚至可能将它包含在Python标准库的未来版本中 – 我敢肯定有很多人会喜欢像那.
总结以上是内存溢出为你收集整理的Python – 使用mailto打开默认邮件客户端,具有多个收件人全部内容,希望文章能够帮你解决Python – 使用mailto打开默认邮件客户端,具有多个收件人所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)