本系列前一篇文章,我们已经介绍了如何使用 Python 编写一段代码,将搜索引擎上找到的天气预报网站上的信息,读取到本地:
使用 ChatGPT 帮助小学生编程入门系列之一:Python 编程读取和解析天气预报网页上的数据
本文我们再进一步,目标是把一段文本,通过 Python 发送到指定的邮箱去。
学会这个方法之后,我们还能把前面一篇文章的成果结合起来,比如把天气预报信息,用 Python 读取出来,然后发送到指定邮箱去。
向 ChatGPT 发出指令:
你是一个资深的 Python 技术专家,请你编写一段 Python 代码,将一个字符串值通过电子邮件,发送到指定的邮箱中去。
得到源代码:
我使用网易邮箱进行测试,把源代码拷贝到我本地后,稍作修改,主要是将我网易邮箱的用户名和 password,硬编码到代码里去,然后把网易邮箱的 SMTP 服务器地址和端口,填写到代码中去。
总共 31 行代码:
发送的正文,硬编码在代码第 19 行。
执行 Python 代码,出错了,遇到如下错误消息:smtplib.SMTPAuthenticationError: (550, b'User has no permission')
其实这个错误不怪 ChatGPT,因为 ChatGPT 上面的回复里,已经明确提醒过我们:
为了使用Gmail SMTP服务器,你需要允许"不够安全的应用"访问你的账户。你可以在Google帐户的"安全性"设置中更改这个选项。如果你启用了两步验证,你需要生成一个应用专用密码来代替你的常规密码。
对于小朋友来说,可能不太明白上面这句话。不要紧,再次求助 ChatGPT:
你是一个资深的 Python 技术专家,我用下面的 Python 代码发送电子邮件:
server = smtplib.SMTP(smtp_server, port)
server.starttls()
server.login(sender_email, password)
我的 sender_email 和 password 分别维护了我的电子邮箱账号和登录密码,我在网页端也能使用这个用户名和密码登录,但是执行代码时遇到错误消息:
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (550, b'User has no permission')
请问如何解决?
ChatGPT 的回复答到了点子上。
这个错误提示"用户没有权限",可能是由于以下几个原因:
- 邮箱服务提供商需要更高级别的权限才能使用 SMTP。你可能需要在你的邮箱设置中启用"允许不够安全的应用"或者"允许第三方应用"。
- 你可能需要为你的应用程序生成一个特定的密码。一些服务提供商(如 Google、Yahoo 等)提供了这种功能,让你可以生成一个特殊的应用密码,以便在不直接使用你的主密码的情况下授权应用程序的访问。
确实,出于安全考虑,国内外主流的邮件提供商,默认情况都没有开启允许第三方应用使用 SMTP.
我们登录网易邮箱,选择配置->POP3/SMTP/IMAP:
然后开启 POP3/SMTP 服务即可:
这里网易邮箱会生成一个专门的授权码,我们可以理解成调用 API 时需要传入的 Access Token:
把这个授权码写入代码第 10 行的 password 变量中:
大功告成。执行 Python 代码,然后到收件人邮箱中查看,果然收到了一封标题为 Python Email Test
(上图代码第 16 行指定),正文由上图代码第 19 行指定的邮件。
ChatGPT 再次帮助我们成功完成了一个编程任务。
更多阅读
- 与其整天担心 AI 会取代程序员,不如先让 AI 帮助自己变得更强大
- 每日一个 ChatGPT 使用小技巧系列之1 - 给出提纲或者素材,让 ChatGPT 帮你写作
- 每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的实现源代码
- 每日一个 ChatGPT 使用小技巧系列之3 - 利用角色扮演提高 ChatGPT 回复的质量
- 使用 Midjourney 点亮程序员的 UI/UX 设计能力
- 使用 New Bing 学习 SAP ABAP 生成 PDF 的几种技术
- 每日一个 ChatGPT 使用小技巧系列之4:使用 AI 工具对 SAP ABAP 代码的编写质量进行打分
- 使用 ChatGPT 帮助小学生编程入门系列之一:Python 编程读取和解析天气预报网页上的数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。