Python3 SMTP邮件发送

转载自菜鸟脚程http://www.runoob.com/python3/python3-smtp.html

代码如下,以QQ邮箱为例:

      1. 发送邮件的附件,需要自己添加在与此文件同目录下

      2. QQ邮箱需要设置 http://service.mail.qq.com/cgi-bin/help?subtype=1&no=166&id=28 

          QQ邮箱开启SSL服务设置后,因为是第三方插件的原因,,需要QQ邮箱提供的授权码当做密码,不使用自己的密码

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart


# 第三方 SMTP 服务
mail_host= "smtp.qq.com"  # 设置服务器
mail_user= "1111111111@qq.com"        # 邮箱名
mail_pass= "********"        # 邮箱密码(由于是第三方登录,密码使用设置的授权码,否则会发送失败)
sender = '1111111111@qq.com'
receivers = ['1111111111@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱


message = MIMEMultipart()   # 创建邮件主体message
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
# message = MIMEText('Python 邮件发送测试  陶大爷首次发送成功', 'plain', 'utf-8')   # 邮件正文
message['From'] = Header("菜鸟教程", 'utf-8')  # 发送者
message['To'] = Header("测试", 'utf-8')  # 接收者
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')


# 邮件正文内容
# mail_msg = "Python 邮件发送测试..."   # 文本格式的邮件正文
# html格式邮件正文
mail_msg = """  python邮件测试                  
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">菜鸟教程链接</a></p>
<p>图片演示:</p>
<p><img src="cid:image1"></p>
"""
#  message.attach(MIMEText(mail_msg, 'plain', 'utf-8'))  # plain文本格式
message.attach(MIMEText(mail_msg, 'html', 'utf-8'))    # html格式


# 指定图片为当前目录
fp = open('test.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
message.attach(msgImage)


# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)


# 构造附件2,传送当前目录下的 runoob.txt 文件(跟本文件在同一目录下的文件,否则报错)
att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
message.attach(att2)


# 构造附件3,传送当前目录下的test.png 图片
att3 = MIMEText(open('test.png', 'rb').read(), 'base64', 'utf-8')
att3["Content-Type"] = 'application/octet-stream'
att3["Content-Disposition"] = 'attachment; filename="test.png"'
message.attach(att3)


try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)    # qq域名端口号 ,一般域名端口都是25 (奇怪的是qq的端口应该是465,但是我填465就发送失败,填25就发送成功)
    smtpObj.login(mail_user, mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送邮件格式
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")

网易@163.com,  smtp服务器:smtp.163.com,端口:25

网易@yeah.com,  smtp服务器:smtp.yeah.com,端口:25

网易@126.com,  smtp服务器:smtp.126.com,端口:25

搜狐@sohu.com,  smtp服务器:smtp.sohu.com,端口:25

搜狗@sogou.com,  smtp服务器:smtp.sogou.com,端口:25

新浪@sina.com,  smtp服务器:smtp.sina.com,端口:25

tom@tom.com,  smtp服务器:smtp.tom.com,端口:25

21cn@21cn.com,  smtp服务器:smtp.21cn.com,端口:25

以下三个邮箱需要勾选SSL安全连接:

gmail@gmail.com,  smtp服务器:smtp.gmail.com,端口:465或者587

qq@qq.com,  smtp服务器:smtp.qq.com,端口:465 
注:qq邮箱默认是关闭smtp服务的,开通方法:http://service.mail.qq.com/cgi-bin/help?subtype=1&no=166&id=28

msn邮箱(包括hotmail.com,live.com,outlook.com),  smtp服务器:smtp.live.com,
端口:25

注:以上为免费邮箱的smtp,收费邮箱请查阅服务提供商的说明。

中盛客户管理软件的群发邮件设置方法请参阅:http://www.zscrm.cn/zsemailsmtp.htm

中盛客户关系管理软件带称呼群发邮件中盛客户关系管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值