用python标准库smtplib来发QQ邮件及Django中发送邮件

1.QQ邮箱设置

点击QQ邮箱账号,进入后,开启smtp服务许可:

 

 点击“生产授权码”,在手机上发送相应的短信,得到授权码。【注意授权码之间没有空格

2.典型代码块

 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
msg_from='xxxxxxx@qq.com'  #发送邮件的邮箱号码
password='xxxxxxx' #授权码,不是邮箱登录密码
msg_to=['xxx@qq.com','xxx@qq.com','xxx@qq.com'] #收件邮箱List
message=MIMEText('python邮件发送测试...','plain','utf-8')
message['From']=Header('来自JohnYang','utf-8')
message['To']=Header('测试','utf-8')
message['Subject']=Header('Python SMTP邮件测试','utf-8')
client=smtplib.SMTP_SSL('smtp.qq.com',smtplib.SMTP_SSL_PORT)
client.login(msg_from,password)
client.sendmail(msg_from,msg_to,message.as_string()) #发送

  

 3.Django中发送邮件

Django对smptlib进行了包装,使得发送邮件更为简便。

首先在settings.py中添加如下设置:

 

EMAIL_HOST='smtp.qq.com'
EMAIL_PORT=25
EMAIL_HOST_USER='from@example.com'

EMAIL_HOST_PASSWORD='ixxxxxx'
EMAIL_USE_TLS=True

Django中有关邮件的在django.core.mail模块中。

(1)send_mail

from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,
)

 (2)send_mass_mail

datatuple = (
    ('Subject', 'Message.', 'from@example.com', ['john@example.com']),
    ('Subject', 'Message.', 'from@example.com', ['jane@example.com']),
)
send_mass_mail(datatuple)

  (3)EmailMessage类

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
)
message.attach_file('/images/weather_map.png')
message.send()

  

posted @ 2020-08-23 20:13  JohnYang819  阅读(234)  评论(0编辑  收藏  举报