Python 邮件发送:
Python发送邮件是有内置邮件发送模块,采用smtp(由描述源地址到目的地址的轻量级邮件协议)协议进行邮件发送,smtp协议在开发过程当中被分为2种:
1、smtp/imap 用来发送邮件
2、Smtp/pop3 用来接收邮件
常见的 163、qq、网易、新浪、等邮箱都有提供的smpt服务器。
开启163或腾讯邮箱发送邮件服务,生成授权码
163邮箱服务器地址和端口:
腾讯邮箱服务器地址和端口:
先编写一个测试脚本,使用python内置模块
"""
此脚本只作为邮件发送测试
"""
import smtplib # 登陆邮件服务器,进行邮件发送
from email.mime.text import MIMEText # 负责构建邮件格式
# 邮件主题
subject = "哗啦啦"
# 邮件内容
content = "哈哈,猜猜我是谁"
# 发送人
sender = "137****2@163.com"
# 接收人(一串)
recver = """bow@foxmail.com,
9***7@qq.com,
2***559@qq.com
1***959@qq.com
7***9368@qq.com"""
# 授权码
password = ""
# 构造MIMEText对象(邮件),第一个参数就是邮件正文,第二个参数是MIME的subtype,传入'plain',最终的MIME就是'text/plain',最后一定要用utf-8编码保证多语言兼容性
message = MIMEText(content,"plain","utf-8")
message["Subject"] = subject
message["To"] = recver
message["From"] = sender
# 创建SMTP客户端对象,连接smtp服务器
smtp = smtplib.SMTP_SSL("smtp.163.com",994)
# 登录
smtp.login(sender,password)
# 发送邮件,第一个参数是发送人,第二个是接收人,必须是列表,第三个参数是邮件信息,将msg(MIMEText对象或者MIMEMultipart对象)变为str
smtp.sendmail(sender,recver.split(",\n"),message.as_string())
# 关闭客户端连接
smtp.close()
Django一如既往的对发送邮件也进行了封装,所以对setting进行配置,添加Django邮件发送服务
# 配置邮件服务器
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 发送邮件采用smtp服务
EMAIL_USE_TLS = False #是否使用tls加密方式
EMAIL_HOST = 'smtp.qq.com' # 腾讯邮箱服务器地址
EMAIL_PORT = 25 # smtp端口
EMAIL_HOST_USER = '9**077@qq.com' # 发送人
EMAIL_HOST_PASSWORD = 'euaqg*****cfi' # 授权码
DEFAULT_FROM_EMAIL = '9**077@qq.com' # 默认发送人
邮件视图函数
from django.core.mail import send_mail
from django.conf import settings
def sendMail(request):
msg = '服务器运行良好'
send_mail(
subject='Django邮件测试', # 邮件主题
message=msg, # 邮件内容
from_email=settings.EMAIL_HOST_USER, # 发件人
recipient_list=["13***2@163.com"], # 收件人,注意是一个列表,可以群发
fail_silently=False # 为True忽略邮件发送时报错的异常
)
return HttpResponse('测试邮件已发出请注意查收')
测试:
发送短信(接口请求形式)
短信发送都需要借助短信发送平台,使用平台发送短信,通常是收费。
今天要使用的平台是互亿平台。
http://www.ihuyi.com/
编写短信测试代码:
#coding:utf-8
import requests
url = "http://106.ihuyi.com/webservice/sms.php?method=Submit"
account = "C57900965"
password = "9c93afbf*********2f5786a9"
mobile = "13*****82"
content = "您的验证码是:201918。请不要把验证码泄露给其他人。"
#定义请求的头部
headers = {
"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
}
#定义请求的数据
data = {
"account": account,
"password": password,
"mobile": mobile,
"content": content,
}
#发起数据
response = requests.post(url,headers = headers,data=data)
#url 请求的地址
#headers 请求头部
#data 请求的数据
print(response.content.decode())