利用python自动发送邮件(无敌详细讲解版)

完整代码文末即可获取

python发送邮件的具体步骤:

利用python自动发送邮件(无敌详细讲解版)_第1张图片

下面具体以qq邮箱为例详细解释:

第0步:连接服务器

       •连接服务器需要用到smtplib库,SMTP代表简单邮件传输协议,相当于一种计算机之间发邮件的约定。
              •具体链接方法:

import smtplib 
#  smtplib是python的一个内置库,所以不需要用pip安装
mailhost='smtp.qq.com'
#  把qq邮箱的服务器地址赋值到变量mailhost上,地址需要是字符串的格式。
qqmail = smtplib.SMTP()
#  实例化一个smtplib模块里的SMTP类的对象,这样就可以使用SMTP对象的方法和属性了
qqmail.connect(mailhost,25)
#  连接服务器,第一个参数是服务器地址,第二个参数是SMTP端口号。    

       •第一行:引入smtplib库
       •第二行:qq邮箱的服务器地址,可以通过搜索引擎查到。
利用python自动发送邮件(无敌详细讲解版)_第2张图片
       •点击第一个网址进去:
利用python自动发送邮件(无敌详细讲解版)_第3张图片

我们就拿到了qq邮箱的smtp地址,如果你需要其他邮箱的smtp地址,即可以自行搜索得到。

       •第五行:实例化了一个smtplib里的SMTP对象
       •第七行:用SMTP对象的connect()方法连接服务器,第一个参数是获取到的服务器地址,第二个参数是SMTP端口号——25。端口号选择不是唯一的,25是最简单,最基础的端口号

第1步和第2步:通过账号和密码登录邮箱;填写收件人
import smtplib 
#smtplib是python的一个内置库,所以不需要用pip安装
mailhost='smtp.qq.com'
#把qq邮箱的服务器地址赋值到变量mailhost上
qqmail = smtplib.SMTP()
#实例化一个smtplib模块里的SMTP类的对象,这样就可以SMTP对象的方法和属性了
qqmail.connect(mailhost,25)
#连接服务器,第一个参数是服务器地址,第二个参数是SMTP端口号。
#以上,皆为连接服务器的代码

account = input('请输入你的邮箱:')
#获取邮箱账号
password = input('请输入你的密码:')
#获取邮箱密码
qqmail.login(account,password)
#登录邮箱,第一个参数为邮箱账号,第二个参数为邮箱密码    

receiver=input('请输入收件人的邮箱:')
#获取收件人的邮箱

       •第十一行:用input()获取邮箱账号
       •第十三行:用input()获取邮箱密码
       •第十八行:获取收件人的邮箱
注意,这里可不是你平时登录邮箱的密码!这里可不是你平时登录邮箱的密码!这里可不是你平时登录邮箱的密码!
       •密码获取方式:
       •第一步:请打开https://mail.qq.com/登录你的邮箱。然后点击位于顶部的【设置】按钮,选择【账户】,然后下拉到这个位置,将首个SMTP服务开启。
利用python自动发送邮件(无敌详细讲解版)_第4张图片
       •第二步点击生成授权码
利用python自动发送邮件(无敌详细讲解版)_第5张图片
利用python自动发送邮件(无敌详细讲解版)_第6张图片
注意保护好你的授权码,在你使用SMTP服务登录邮箱时,就可以输入这个授权码作为密码登录了:

第3步和第4步:填写主题和撰写正文,需要用到email库
from email.mime.text import MIMEText
from email.header import Header
#引入Header和MIMEText模块
content=input('请输入邮件正文:')
#输入你的邮件正文
message = MIMEText(content, 'plain', 'utf-8')
#实例化一个MIMEText邮件对象,该对象需要写进三个参数,分别是邮件正文,文本格式和编码.
subject = input('请输入你的邮件主题:')
#用input()获取邮件主题  
message['Subject'] = Header(subject, 'utf-8')
#在等号的右边,是实例化了一个Header邮件头对象,该对象需要写入两个参数,分别是邮件主题和编码,然后赋值给等号左边的变量message['Subject']。

       •第1行和第2行代码:引入了email库中的MIMEText模块和Header模块。
       •第4行代码:用input()函数获取邮件正文
       •第6行代码:实例化一个MIMEText的邮件对象,构造了一个纯文本邮件了。
MIMEText对象有三个参数,一个是邮件正文;另一个是文本格式,一般设置为plain纯文本格式;最后一个是编码格式,设置为utf-8
       •第8行:是用input()函数获取邮件主题
       •第10行:message[‘Subject’] = Header(subject, ‘utf-8’),等号右边是实例化了一个Header邮件头对象,该对象需要写入两个参数,分别是邮件主题和编码。

最后两步:发送邮件和退出邮箱了
qqmail.sendmail(account, receiver, message.as_string())
#发送邮件,调用了sendmail()方法,写入三个参数,分别是发件人,收件人,和字符串格式的正文。
qqmail.quit()
#退出邮箱

       •第一行:调用sendmail()发送邮件,括号里面有三个参数,第0个是发件人的邮箱地址,第1个是收件人的邮箱地址,第2个是正文,但必须是字符串格式,用as_string()函数转换了一下

我们希望发送成功后能显示“邮件发送成功”,失败的时候能提示我们“邮件发送失败”,使用try语句来实现。
try:
    qqmail.sendmail(account, receiver, message.as_string())
    print ('邮件发送成功')
except:
    print ('邮件发送失败')
qqmail.quit()  

完整代码

import smtplib 
from email.mime.text import MIMEText
from email.header import Header
#引入smtplib、MIMETex和Header

mailhost='smtp.qq.com'
#把qq邮箱的服务器地址赋值到变量mailhost上,地址应为字符串格式
qqmail = smtplib.SMTP()
#实例化一个smtplib模块里的SMTP类的对象,这样就可以调用SMTP对象的方法和属性了
qqmail.connect(mailhost,25)
#连接服务器,第一个参数是服务器地址,第二个参数是SMTP端口号。
#以上,皆为连接服务器。

account = input('请输入你的邮箱:')
#获取邮箱账号,为字符串格式
password = input('请输入你的密码:')
#获取邮箱密码,为字符串格式
qqmail.login(account,password)
#登录邮箱,第一个参数为邮箱账号,第二个参数为邮箱密码
#以上,皆为登录邮箱。

receiver=input('请输入收件人的邮箱:')
#获取收件人的邮箱。

content=input('请输入邮件正文:')
#输入你的邮件正文,为字符串格式
message = MIMEText(content, 'plain', 'utf-8')
#实例化一个MIMEText邮件对象,该对象需要写进三个参数,分别是邮件正文,文本格式和编码
subject = input('请输入你的邮件主题:')
#输入你的邮件主题,为字符串格式
message['Subject'] = Header(subject, 'utf-8')
#在等号的右边是实例化了一个Header邮件头对象,该对象需要写入两个参数,分别是邮件主题和编码,然后赋值给等号左边的变量message['Subject']。
#以上,为填写主题和正文。

try:
    qqmail.sendmail(account, receiver, message.as_string())
    print ('邮件发送成功')
except:
    print ('邮件发送失败')
qqmail.quit()
#以上为发送邮件和退出邮箱。

你可能感兴趣的:(python,python,软件测试)