admin管理员组文章数量:1559090
2021/9/15更新:添加图片附件 添加抄送
注意:msg[‘cc’] = ‘,’.join(cc) 这里表示在邮件的抄送栏写明抄送给谁,但是不代表会被发送。所以必须把cc加入到receiver中一起发送才可以。
# sender: 发件邮箱, string
# receiver: 收件邮箱, string
# cc: 抄送, list
# subject: 主题
# content: 正文内容(html)
# imgs: 图片附件 list
# attaches: 其他附件 list
# my_pass: 发信密码
def send_mail(sender, receiver, cc, subject, content, imgs, attaches, my_pass):
# ret是返回值, false表示发送失败
ret = true
try:
# 发送html和附件
msg = mimemultipart('related')
msg['from'] = formataddr(["", sender])
msg['to'] = formataddr(["", receiver])
msg['subject'] = subject
msg['cc'] = ','.join(cc)
# 填写正文内容
msgtxt = mimetext(content, "html", "utf-8")
msg.attach(msgtxt)
# 添加img
for img in imgs:
att = addimg(img, '' )
att["content-type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att["content-disposition"] = 'attachment; filename=%s' % img
msg.attach(att)
# 添加其他附件
for f in attaches:
att = mimeapplication(open(f, 'rb').read())
att["content-type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att["content-disposition"] = 'attachment; filename=%s' % f
msg.attach(att)
# 登录邮件服务器
server = smtplib.smtp_ssl('smtp.exmail.qq', 465)
server.login(sender, my_pass)
server.sendmail(sender, [receiver,]cc, msg.as_string())
server.quit()
except exception as e:
print("send_mail:failed!")
print(e)
ret = false
return ret
2020/12/14更新:腾讯企业邮不需要取得发信密码
今天pm要求用公共邮箱发信,所以。。我发现不并不需要开启安全登录 获取发信密码。
代码不用改,my_pass直接用登录密码即可。
示例代码
import smtplib
from email.mime.application import mimeapplication
from email.mime.multipart import mimemultipart
from email.utils import formataddr
def send_mail(sender, receiver, subject, attaches, my_pass):
ret = true
try:
msg = mimemultipart()
# 邮件显示的发信人名称
msg['from'] = formataddr(["大数据xxx", sender])
msg['to'] = formataddr(["生产", receiver])
# 邮件显示的主题
msg['subject'] = subject
server = smtplib.smtp_ssl('smtp.exmail.qq', 465) # 腾讯企业邮
# 这个是普通qq邮箱的服务器
#server = smtplib.smtp_ssl("smtp.qq", 465)
for f in attaches:
att = mimeapplication(open(f, 'rb').read())
att["content-type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att["content-disposition"] = 'attachment; filename=%s' % f
msg.attach(att)
server.login(sender, my_pass)
server.sendmail(sender, [receiver, ], msg.as_string())
server.quit()
except exception:
ret = false
return ret
sender = 'xxx@xx'
receiver = 'xxxx@qq'
my_pass = '**********'
attaches = [准备发送的文件名列表]
send_mail(sender, receiver, "订单更新结果", attaches, my_pass)
要点在于如何获取这个my_pass,就是使用邮箱发信的密码。这个密码并不是发件人登录邮箱服务器所用的密码(其实不太确切)。
对于普通qq邮箱
设置 - 账户 -
用这个授权码当my_pass。
腾讯企业邮
我是公司业务嘛,肯定不能用个人邮箱对吧。首先开启安全登录,之后可能会被退出账户吧,扫码进来之后,获取客户端专用密码即可。客户端专用密码就是my_pass。
j9九游会老哥俱乐部交流区的版权声明:本文标题:python-在脚本中发送邮件-普通qq邮箱和腾讯企业邮【不用开启安全登录】示例 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727421684a1113652.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论