python-爬虫-邮箱发送
# -*- coding: utf-8 -*-
#发送信息到邮箱
import email.utils
import smtplib
from email.mime.text import MIMEText #发送文本
from email.mime.image import MIMEImage #发送图片
from email.mime.multipart import MIMEMultipart
from email.header import Header
"""
POP3/SMTP 设置方法
用户名/帐户: 你的QQ邮箱完整的地址
密码: 生成的授权码
电子邮件地址: 你的QQ邮箱的完整邮件地址
接收邮件服务器: pop.qq.com,使用SSL,端口号995
发送邮件服务器: smtp.qq.com,使用SSL,端口号465或587
"""
#smtp.qq.com,使用SSL,端口号465或587
#授权码:lpquuutuiiuncaih
email_addr_send = "30xxxxx@qq.com" #发送者邮箱地址
email_addr_recv = "30xxxxx@qq.com" #接收者邮箱地址
email_pass = "lpquuutui" #授权码
#smtp邮箱服务器
smtp_server = 'smtp.qq.com'
#发送文本
def send_text():
# MIMEText三个主要参数
# 1. 邮件内容
# 2. MIME子类型,plain表示text类型
# 3. 邮件编码格式,使用"utf-8"避免乱码
msg = MIMEText('恭喜,您在12306抢票成功,请及时支付!', 'plain', 'utf-8') # 邮件内容
# 发件人
# msg['From'] = formataddr([发件人, 发件人邮箱地址])
# msg['From'] = email_addr #发送者的邮箱地址
msg['From'] = email.utils.formataddr(("输入发送者的姓名", email_addr_send))
# 收件人:可以有多个、写成一个列表
# [xxx@qq.com, 111@qq.com]
# msg['To'] = email.utils.formataddr(("输入接收者的姓名", email_addr_recv))
msg['To'] = email_addr_recv # 接收者的邮箱地址
# 邮件标题
# msg['Subject'] = "Hehuyi Test"
subject = '恭喜您,Python已为您在12306抢票成功,请及时支付! '
msg['Subject'] = Header(subject, 'utf-8')
# 实例化stmp对象
# 由于安全问题,通常不直接使用smtplib.SMTP来实例化,第三方邮箱会认为它是不安全的而报错
# 使用加密过的SMTP_SSL来实例化
stmp_object = smtplib.SMTP_SSL(smtp_server)
# 链接stmp服务器
# SMTP.connect(host,port):连接远程smtp主机
stmp_object.connect(smtp_server, 465) # 链接服务器
# 登录stmp服务器
# SMTP.login(user, password):远程smtp主机的校验方法
stmp_object.login(email_addr_send, email_pass) # 登录邮箱地址
# 向其他人发送邮箱内容
# SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]):实现邮件的发送功能
# stmp_object.sendmail(发件人、收件人(列表)、邮件内容)
stmp_object.sendmail(email_addr_send, email_addr_recv.split(','), msg.as_string()) # 向邮箱发送消息
print('邮件发送成功!')
stmp_object.quit()
#发送图片
def send_img():
msg = MIMEMultipart()
msg['From'] = email.utils.formataddr(('我', email_addr_send))
msg['To'] = email.utils.formataddr(("你", email_addr_recv))
msg['Subject'] = "邮件标题:发送图片"
with open('2.png', 'rb') as f:
img = f.read()
msg_img = MIMEImage(img)
msg.attach(msg_img)
#连接stmp服务
stmp_svc = smtplib.SMTP_SSL(smtp_server)
stmp_svc.connect(smtp_server, 465)
stmp_svc.login(email_addr_send, email_pass)
stmp_svc.set_debuglevel(True)
try:
stmp_svc.sendmail(email_addr_send, email_addr_recv, msg=msg.as_string())
except Exception as e:
print(e)
if __name__ == '__main__':
#send_text()
send_img()