测试文件与代码结构
一, QQ邮箱发送邮件
大致步骤
1.登录qq邮箱,选择设置
2.点击账户,进入设置界面
3.授权,生成授权码
4.编写发送代码,密码使用的是授权生成的代码(保证发送邮箱的SMTP功能是开启的)
5.效果展示
发送代码
1.发送纯文本/带有html数据的邮件
print("*************qq邮箱形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.qq.com,使用SSL,端口号993
# 发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='1751122189@qq.com' # 发件人邮箱账号
my_pass = '***' # 发件人邮箱密码
my_user='songjianguohp@163.com' # 收件人邮箱账号,我这边发送给自己
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""
def mail():
ret=True
try:
# msg=MIMEText('填写邮件内容','plain','utf-8') #此处为仅填写文本数据
msg=MIMEText(mail_msg,'html','utf-8') #需要发送html数据的时候用这种形式
msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="菜鸟教程发送邮件测试" # 邮件的主题,也可以说是标题
server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
2.发送带有附件的邮件
print("*************qq邮箱带附件形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.qq.com,使用SSL,端口号993
# 发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
my_sender='1751122189@qq.com' # 发件人邮箱账号
my_pass = '***' # 发件人邮箱密码
my_user='songjianguohp@163.com' # 收件人邮箱账号,我这边发送给自己
def mail():
ret=True
try:
#创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = 'Python SMTP 邮件测试' # 邮件的主题,也可以说是标题
#邮件正文内容
msg.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('./驾驶证.jpg', 'rb').read(), 'base64', 'gb2312')#
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1.add_header('Content-Disposition', 'attachment',filename=("驾驶证.jpg"))
msg.attach(att1)
# 构造附件2,传送当前目录下的 runoob.txt 文件
att2 = MIMEText(open('./分公司建维部人员信息.xlsx', 'rb').read(), 'base64', 'gb2312')
att2["Content-Type"] = 'application/octet-stream'
att2.add_header('Content-Disposition', 'attachment',filename=("分公司建维部人员信息.xlsx"))
msg.attach(att2)
server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件
server.quit() # 关闭连接
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print(e)
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
二, 163邮箱发送邮件
大致步骤
1.登录163邮箱,选择POP3/SMTP/IMAP
2.进入设置页面,开启对应功能,获取到授权密码及发送邮箱服务器网址
- 服务器网址如下
4.编写发送代码,密码使用的是授权生成的代码(保证发送邮箱的SMTP功能是开启的)
5.效果展示
发送代码
1.发送纯文本/带有html数据的邮件
print("*************163邮箱形式*****************")
# 授权码: ****
# 接收邮件服务器:imap.163.com,使用SSL,端口号993
# 发送邮件服务器:smtp.163.com,使用SSL,端口号465或994
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='songjianguohp@163.com' # 发件人邮箱账号
my_pass = '****' # 发件人邮箱密码
my_user='songjianguohp@163.com' # 收件人邮箱账号,我这边发送给自己
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""
def mail():
ret=True
try:
# msg=MIMEText('填写邮件内容','plain','utf-8') #此处为仅填写文本数据
msg=MIMEText(mail_msg,'html','utf-8') #需要发送html数据的时候用这种形式
msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="菜鸟教程发送邮件测试" # 邮件的主题,也可以说是标题
server=smtplib.SMTP_SSL("smtp.163.com", 465) # 发件人邮箱中的SMTP服务器
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
2.发送带有附件的邮件
print("*************163邮箱带附件形式*****************")
# 授权码: ****
# 接收邮件服务器:imap.163.com,使用SSL,端口号993
# 发送邮件服务器:smtp.163.com,使用SSL,端口号465或994
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
my_sender='songjianguohp@163.com' # 发件人邮箱账号
my_pass = '***' # 发件人邮箱密码
my_user='songjianguohp@163.com' # 收件人邮箱账号,我这边发送给自己
def mail():
ret=True
try:
#创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = 'Python SMTP 邮件测试' # 邮件的主题,也可以说是标题
#邮件正文内容
msg.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('./驾驶证.jpg', 'rb').read(), 'base64', 'gb2312')#
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1.add_header('Content-Disposition', 'attachment',filename=("驾驶证.jpg"))
msg.attach(att1)
# 构造附件2,传送当前目录下的 runoob.txt 文件
att2 = MIMEText(open('./分公司建维部人员信息.xlsx', 'rb').read(), 'base64', 'gb2312')
att2["Content-Type"] = 'application/octet-stream'
att2.add_header('Content-Disposition', 'attachment',filename=("分公司建维部人员信息.xlsx"))
msg.attach(att2)
server=smtplib.SMTP_SSL("smtp.163.com", 465) # 发件人邮箱中的SMTP服务器
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件
server.quit() # 关闭连接
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print(e)
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
三, 139邮箱发送邮件
大致步骤
1.进入139邮箱界面,点击设置,进入常规设置
2.进入左侧账户安全找到邮箱协议设置,开启功能,记住发送方邮箱服务器网址。授权密码为用户登录密码–此处与其他两种邮箱不同
发送代码
1.发送纯文本/带有html数据的邮件(经过测试仅能发送文本形式,当发送html给163邮箱的时候会被当成垃圾邮箱退回,请老爷们自行测试)
print("*************139邮箱形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.139.com,使用SSL,端口号993
# 发送邮件服务器:smtp.139.com,使用SSL,端口号465
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='18306462619@139.com' # 发件人邮箱账号
my_pass = '***' # 发件人邮箱密码(139邮箱密码不需要授权,就是自己的登录密码)
my_user='songjianguohp@163.com' # 收件人邮箱账号,我这边发送给自己
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""
def mail():
ret=True
try:
msg=MIMEText('填写邮件内容','plain','utf-8') #此处为仅填写文本数据
# msg=MIMEText(mail_msg,'html','utf-8') #需要发送html数据的时候用这种形式(139邮箱不能用,会被当成垃圾邮件退回)
msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="菜鸟教程发送邮件测试" # 邮件的主题,也可以说是标题
server=smtplib.SMTP_SSL("smtp.139.com", 465) # 发件人邮箱中的SMTP服务器
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print(e)
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
- 当发送带有html的邮件时
- 解决方法:那就发送文本网址就好啦~~~自己复制一下好像也不是很麻烦,哈哈。
2.发送带有附件的邮件(原理同上,仅注意修改邮箱服务器和授权密码即可)
print("*************139邮箱带附件形式*****************")
# 授权码: ***
# 接收邮件服务器:imap.139.com,使用SSL,端口号993
# 发送邮件服务器:smtp.139.com,使用SSL,端口号465
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
my_sender='18306462619@139.com' # 发件人邮箱账号
my_pass = '***' # 发件人邮箱密码
my_user='songjianguohp@163.com' # 收件人邮箱账号,我这边发送给自己
def mail():
ret=True
try:
#创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = 'Python SMTP 邮件测试' # 邮件的主题,也可以说是标题
#邮件正文内容
msg.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('./驾驶证.jpg', 'rb').read(), 'base64', 'gb2312')#
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1.add_header('Content-Disposition', 'attachment',filename=("驾驶证.jpg"))
msg.attach(att1)
# 构造附件2,传送当前目录下的 runoob.txt 文件
att2 = MIMEText(open('./分公司建维部人员信息.xlsx', 'rb').read(), 'base64', 'gb2312')
att2["Content-Type"] = 'application/octet-stream'
att2.add_header('Content-Disposition', 'attachment',filename=("分公司建维部人员信息.xlsx"))
msg.attach(att2)
server=smtplib.SMTP_SSL("smtp.139.com", 465) # 发件人邮箱中的SMTP服务器
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(如果需要多发就把上面的接受改成数组,这里不用加中括号了)、发送邮件
server.quit() # 关闭连接
except Exception as e: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print(e)
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
|