Python之关于收发邮件——项目实操之编码及文件读写篇——{菜鸟自结}

哇!好久不见!终于有时间继续更新了,关于上一个留下的问题,我想抽别的时间来写,感谢原谅!笔芯~

相信对于上班族来说,学习Python的一个比较主要的应用可能就是自动发送邮件给比较多的人了吧!那么针对这样的诉求,我们今天学习群收发邮件好咯!

这次我们依旧以分级的方式学习!第一步~

一份简单的邮件

我们可以通过网络搜索,了解我们要写发邮件需要用到smtplib、email这两个模块,其中smtplib是用来发送邮件的,email是用来构建邮件内容的。这两个都是Python内置模块。

smtplib模块

首先我们来看看常用到的smtplib模块的方法

import smtplib

server = smtplib.SMTP()
server.connect(host, port)
server.login(username, password) 
server.sendmail(sender, to_addr, msg.as_string()) 
server.quit()



# 引入smtplib模块
# server是一个变量,smtplib.SMTP()是变量server的值。
# SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思,SMTP协议是由源服务器到目的地服务器传送邮件的一组规则。也就是说我们需要通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器。
# 我们需要指定SMTP服务使用的端口号,一般情况下SMTP默认端口号为25。(如果不可以,自己去搜索噢!设置——选项——POP和IMAP设置)
# connect也就是连接所指定的服务器。
# host是指定连接的邮箱服务器,你可以指定服务器的域名。通过搜索“xx邮箱服务器地址”,就可以找到。
# port 是“端口”的意思。端口属于计算机网络知识里的内容,你可以自行搜索了解,现在我们只要知道它是一个【整数】即可。

在没有工作之前大家应该都会使用qq邮箱吧,那么我们现在就以qq邮箱为例来写代码

import smtplib

server = smtplib.SMTP()
server.connect('smtp.qq.com', 25)


# 使用默认端口 :25
import smtplib

server = smtplib.SMTP_SSL()
# 如果端口是用SSL加密,请这样写代码。其中server是变量名
server.connect('smtp.qq.com', 465)
# 如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com', 465,'utf-8')

注意哦!一般来说qq邮箱是关闭SMTP服务的,我们需要开启它,操作如下:

(登录邮箱——设置——账户设置——开启服务)小提示:保存好密码哦~

server.login(username, password) 


# 我们来继续看下面的代码
# login是登录的意思,也就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权码。

授权码我们可以使用input() 为安全起见哦~

server.sendmail(from_addr, to_addr, msg.as_string()) 
server.quit() 



# from_addr:邮件发送地址,就是上面的username
# to_addr:邮件收件人地址
# msg.as_string():为一个字符串类型
# sendmail是“发送邮件”的意思,是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容。
# 发件人和username是一样的。

其中msg.as_string()是一个字符串类型:as_string()是将发送的信息msg变为字符串类型。那么我们可以写出下面的代码。

from_addr = 'xxx@qq.com'
to_addr = 'xxx@qq.com'

server.sendmail(from_addr, to_addr, msg.as_string()) 


# from_addr:邮件发送者地址。 
# to_addr:邮件收件人地址。
# msg.as_string():为一个字符串类型 

不知道大家有没有发现,我们没有写msg是什么?email模块该登场了吧~

email模块

email模块就是用来写邮件内容,可以是纯文本,图片,附件等多种形式。让我们来一一学习吧!

MIMEText: 内容形式为纯文本、HTML页面。

MIMEimage: 内容形式为图片。

MIMEMultipart: 多形式组合、可包含文本和附件。

# 导入方式

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

我想此时此刻,可能很多人会疑惑,为什么不是import email ?

其实email是一个“包”,而smtplib是一个模块,模块(module)一般是一个文件,而包(package)是一个目录,一个包中可以包含很多个模块,可以说包是“模块打包”组成的。Python中的包都必须默认包含一个init.py的文件。init.py控制着包的导入行为。假如这个文件为空,那么我们仅仅导入包的话,就什么都做不了。所以直接是行不通的。

MIMEText(msg,type,chartset)
# msg:文本内容,可自定义
# type:文本类型,默认为plain(纯文本)
# chartset:文本编码,中文为“utf-8”

了解的参数的内容,我们就可以写出我们想要发送邮件的内容,介于我们是1.0版本,我们就写纯文本好了。

from email.mime.text import MIMEText

msg = MIMEText('刚学会的Python','plain','utf-8')

现在有内容了,我们该总结一下整体的代码结构啦!

1. 导入模块:stmplib模块、email模块

2. 定义变量:包括发件人、密码、收件人、正文内容、服务器

3. 使用方法:链接,登录,发送,退出

# 1.导入模块
import smtplib
from email.mime.text import MIMEText

# 2.定义变量
from_addr = 'xxx@qq.com'
password = '你的授权码数字'
to_addr = 'xxx@qq.com'
smtp_server = 'smtp.qq.com'
msg = MIMEText('刚学会的Python','plain','utf-8')

# 3.使用方法
server = smtplib.SMTP(SMTP_SERVER,465)
server.login(from_addr,password)
server.sendmail(from_addr,to_addr,msg.as_string())
server.quit()

福利来啦!

# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容

# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'

# 收信方邮箱
to_addr = 'xxx@qq.com'

# 发信服务器
smtp_server = 'smtp.qq.com'

# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('刚学会的Python','plain','utf-8')

# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

经过尝试,你收到你刚学会的邮件了嘛?

可能会有些同学报错,可以看看小孤有没有写报错解决方式呢?又是热爱小孤的一天~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值