【转载】python 实现发送邮件的两种方式(send_mail模块发送,smtplib模块发送)


发布时间:2020-01-20 05:47    作者: Uncle Hui   已过去:2 月,2 周   阅读总量:129 已被赞:1


转载一篇文章,邮件发送的,问题说得很全面,收集一下,以备所需

https://www.cnblogs.com/liu--huan/p/10077408.html#_label3

目录

settings里配置

复制代码

# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'smtp.qq.com'  # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465    # 端口号
EMAIL_HOST_USER = '306334678@qq.com'  # 发送者的邮箱帐号
EMAIL_HOST_PASSWORD = '***'  #   发送者的邮箱授权
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
#这样收到的邮件,收件人处就会这样显示
#DEFAULT_FROM_EMAIL = 'lqz<'306334678@qq.com>'

EMAIL_USE_SSL = True   #使用ssl


#EMAIL_USE_TLS = False # 使用tls
#EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True

复制代码

回到顶部

views视图函数

复制代码

from django.core.mail import send_mail   # 导入邮箱模块
from threading import Thread     # 导入线程模块
from threading import Thread
  t1 = Thread(target=send_mail,args=(
  '您的%s文章被%s评论了'%(article_name,user_name),
  '这个人评论了:%s'%(content),
  settings.EMAIL_HOST_USER,
  ['1670874977@qq.com'] )) t1.start()

复制代码

回到顶部

一次性发多封邮件

复制代码

from django.core.mail import send_mass_mail

message1 = ('第一封邮件标题', '这是邮件内容', 'from@example.com', ['first@example.com', 'other@example.com'])
message2 = ('第二封邮件标题', '这是邮件内容', 'from@example.com', ['second@test.com'])
'''
fail_silently: (可选)布尔值。为 False 时, send_mail 会抛出 smtplib.SMTPException 异常。smtplib 文档列出了所有可能的异常。 这些异常都是 SMTPException 的子类
'''
send_mass_mail((message1, message2), fail_silently=False)   # 开始发送多封邮件
'''
send_mail 每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。
'''

复制代码

回到顶部

携带附件或发送html文件

复制代码

from django.core.mail import EmailMultiAlternatives
# subject 主题 content 内容 to_addr 是一个列表,发送给哪些人
msg = EmailMultiAlternatives('邮件标题', '邮件内容', '发送方', ['接收方'])
msg.content_subtype = "html"
# 添加附件(可选)
msg.attach_file('test.txt')
# 发送
msg.send()

复制代码

回到顶部

各大邮箱smtp服务器及端口

 View Code

回到顶部

qq邮箱获取授权码

 

 

回到顶部

smtplib模块发送邮件

复制代码

import smtplib
from email.mime.text import MIMEText

msg_from = '306334678@qq.com'  # 发送方邮箱
passwd = '****'  # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码)
msg_to = ['****@qq.com','**@163.com','*****@163.com']  # 收件人邮箱

subject = "邮件标题"  # 主题
content = "邮件内容,我是邮件内容,哈哈哈"
# 生成一个MIMEText对象(还有一些其它参数)
# _text_:邮件内容
msg = MIMEText(content)
# 放入邮件主题
msg['Subject'] = subject
# 也可以这样传参
# msg['Subject'] = Header(subject, 'utf-8')
# 放入发件人
msg['From'] = msg_from
# 放入收件人
msg['To'] = '616564099@qq.com'
# msg['To'] = '发给你的邮件啊'
try:
    # 通过ssl方式发送,服务器地址,端口
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    # 登录到邮箱
    s.login(msg_from, passwd)
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string())
    print('成功')
except s.SMTPException as e:
    print(e)
finally:
    s.quit()

复制代码

感谢原创作者,星牧

点赞

1




登陆后方可评论