python发送邮件 SMTP socks代理
#!/usr/bin/env python# -*- coding: utf-8 -*-"""SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。"""import smtplibimport socksimport json
·
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
"""
import smtplib
import socks
import json
from email.mime.text import MIMEText
import requests
# 提取socks代理API接口,获取num个代理IP
api_url = "http://dps.kdlapi.com/api/getdps/?orderid=*****&num=1&pt=2&format=json&sep=1"
# 快代理用户名密码认证(私密代理/独享代理)
username = "*****"
password = "*****"
""" 设置SMTP服务器所需信息 """
# 服务器ip
mail_host = 'smtp.163.com'
# 服务器端口,默认25
mail_port = 25
# 邮箱用户名
mail_user = '*****@163.com'
# 密码(部分邮箱为授权码)
mail_pass = '*****'
# 邮件发送方邮箱地址
sender = '*****@163.com'
# 邮件接受方邮箱地址,list类型,这意味着你可以写多个邮件地址群发
receivers = ['*****@qq.com']
""" 设置email内容信息 """
# 邮件内容设置
message = MIMEText('邮件内容','plain','utf-8')
# 邮件主题
message['Subject'] = '邮件标题'
# 发送方信息
message['From'] = sender
# 接受方信息
message['To'] = receivers[0]
# 获取API接口返回的socks代理IP,根据返回格式进行解析,json为例
proxy_ip = requests.get(api_url).text
proxy_ip = json.loads(proxy_ip)
addr=proxy_ip['data']['proxy_list'][0].split(":")[0]
port=int(proxy_ip['data']['proxy_list'][0].split(":")[1])
# 将socks代理应用到smplib服务
socks.set_default_proxy(proxy_type=socks.PROXY_TYPE_SOCKS5,
addr=addr,
port=port,
username=username,
password=password)
# Attempts to replace a module's socket library with a SOCKS socket.
socks.wrap_module(smtplib)
# 登录并发送邮件
# 上下文管理器写法,若邮件发送失败,会raise异常
with smtplib.SMTP() as smtpObj:
# 连接到服务器
smtpObj.connect(mail_host,mail_port)
# 登录到服务器
smtpObj.login(mail_user,mail_pass)
# 发送
smtpObj.sendmail(
sender,receivers,message.as_string())
print("success")
"""
# 普通写法
try:
smtpObj = smtplib.SMTP()
# 连接到服务器
smtpObj.connect(mail_host,mail_port)
# 登录到服务器
smtpObj.login(mail_user,mail_pass)
# 发送
smtpObj.sendmail(
sender,receivers,message.as_string())
# 退出
smtpObj.quit()
print('success')
except smtplib.SMTPException as e:
# 打印错误
print('error',e)
"""
更多推荐
已为社区贡献3条内容
所有评论(0)