完整代码文末即可获取
python发送邮件的具体步骤:
下面具体以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邮箱的服务器地址,可以通过搜索引擎查到。
•点击第一个网址进去:
我们就拿到了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服务开启。
•第二步点击生成授权码
注意保护好你的授权码,在你使用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()
#以上为发送邮件和退出邮箱。