Python/Article/advanced/Python实现收发邮件.md

67 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

在实际开发中,当你收到一个需求的时候,比如要做一个「收发邮件」的功能。
如果你完全没有印象,没有思路,可以直接 Google 搜索的。
因为我们不可能对每个知识点都了解,不了解不可耻,但要懂得怎么去找资料了解。
强调一下,
用 Google 搜索。
用 Google 搜索。
用 Google 搜索。
恕我直言,百度搜索是真的辣鸡。
那我们怎么去找资料呢?
首先我们可以直接 Google 「Python 收发邮件」,就可以得到这么一个结果。
![](http://twowaterimage.oss-cn-beijing.aliyuncs.com/2019-10-15-065554.png)
这种常用的需求,基本只要看前几个就能知道大概的思路了。
可以看到,用 Python 实现邮件的收发,主要用到 smtplib 和 email这两个模块。
至于这些模块怎么用,直接看 [Python 官方文档](https://docs.python.org/3.7/library/smtplib.html?highlight=smtplib)
![](http://twowaterimage.oss-cn-beijing.aliyuncs.com/2019-10-15-065957.png)
真的,没有任何教程比官方文档资料还全。
不过我们可以总结一下这些内容。
**1、SMTP 发送邮件**
Python 发送邮件主要步骤如下:
* `import smtplib`
- 导入 `smtplib` 模块,主要用于构造传输服务的
* `server = smtplib.SMTP()`
- SMTP 是 smtplib 模块中的一个类class实例化这个类方便我们调用他里面的方法。
- SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。
* `server.connect(host, port)`
- 连接connect指定的服务器
- host 是指定连接的邮箱服务器,你可以指定服务器的域名。
- port 服务器的端口号
- 这些怎么找到,好比 qq 邮箱,在「设置」那里就有相关的开关和说明。
- ![](http://twowaterimage.oss-cn-beijing.aliyuncs.com/2019-10-15-090427.png)
- 点相关的说明,你就能看到对应的服务器地址和端口号了
- ![](http://twowaterimage.oss-cn-beijing.aliyuncs.com/2019-10-15-090619.png)
* `server.login(username, password)`
- 登录的账号密码
* `server.sendmail(from_addr, to_addr, msg)`
- 发送邮件,发送邮件一般是谁发给了谁,发送了什么?总结为也就是三个参数,发送者,接受者,发送邮件的内容。
- from_addr邮件发送地址
- to_addr邮件收件人地址
- msg 发送邮件的内容,邮件内容需要用到 `email` 模块。通过 `email` 模块我们可以定义邮件的主题,收件人信息,发件人信息等等。
* `server.quit()`
- 退出服务
直接看下例子,给 QQ 邮箱发送一个邮件: