import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import traceback
import threading
# 发件人邮箱账号
sender = 'xxxxxxx@shenshangtech.com'
# user登录邮箱的用户名,password登录邮箱的密码(授权码,即客户端密码,非网页版登录密码),但用腾讯邮箱的登录密码也能登录成功
password = 'xxxxxxx'
baidu_url = 'https://www.baidu.com'
def send_mail(mail_to, subject, content, sub_type='plain'):
ret = True
try:
# 邮件内容
msg = MIMEText(content, sub_type, 'utf-8')
# 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['From'] = formataddr([sender, sender])
# 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['To'] = formataddr([mail_to, mail_to])
# 邮件的主题
msg['Subject'] = subject
# SMTP服务器,腾讯企业邮箱端口是465,腾讯邮箱支持SSL(不强制), 不支持TLS
# qq邮箱smtp服务器地址:smtp.qq.com,端口号:456
# 163邮箱smtp服务器地址:smtp.163.com,端口号:25
server = smtplib.SMTP_SSL("smtp.exmail.qq.com", 465)
# 登录服务器,括号中对应的是发件人邮箱账号、邮箱密码
server.login(sender, password)
# 发送邮件,括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.sendmail(sender, [mail_to, ], msg.as_string())
# 关闭连接
server.quit()
# 如果 try 中的语句没有执行,则会执行下面的 ret=False
except Exception :
traceback.format_exc()
ret = False
return ret
def send_async_mail(mail_to, subject, content, sub_type='plain'):
thr = threading.Thread(target=send_mail, args=[mail_to, subject, content, sub_type])
thr.start()
def send_async_mail_prepare(user_name, user_password, user_email):
email_title = f'邮件主题-xxxxxx!'
content = f"尊敬的xxxxxx您好:<br/><br/> " \
f"这里是邮件的内容 xxxxxx, <br/><br/>" \
f" 百度地址是:<a href='{baidu_url}'>Baidu</a>"
send_async_mail(user_email, email_title, content, "html")
if __name__ == "__main__":
send_async_mail_prepare('test', 'test', 'xxxxx@sina.com')
python 实现腾讯企业邮箱发送邮件
最新推荐文章于 2024-07-18 19:19:04 发布