# 我只在两个绑定的邮箱中发送了,但是不能发送到别人的邮箱,正在解决中
# 错误信息:554,理解太低,暂时没有解决,自己给自己发邮件玩吧。555
# 这个函数可以作为一个简单的邮件提醒功能,爬虫某些时刻给自己发个邮件。QAQ~接受者邮件暂时只支持自己163关联的账号,发送和接受写成同一个也可以使用
import smtplib # 构建SMTP对象
from email.mime.text import MIMEText # 邮箱内容对象
from email.header import Header
class Send_email_for_163():
def __init__(self, smtpUser, smtpPassword, revices):
"""
采用163发送邮件
:param smtpUser: 发送邮箱的用户名
:param smtpPassword: 发送邮箱用户的密码
:param revices: 接受邮件方的邮箱
"""
self.smtpServer = 'smtp.163.com'
self.smtpUser = smtpUser
self.smtpPassword = smtpPassword
self.revices = revices
def send_email(self,user, text, header_name,text_format='plain'):
"""
:param text: 发送的正文
:param header_name: 邮件标题
:param text_format: 正文的格式,plain为普通文本,html为HTML格式默认为普通文本
:return:
"""
# 构建邮箱正文
message = MIMEText(text, text_format, 'utf-8') # 采用email中的MIMEText构造正文
message['From'] = Header(user, 'utf-8') # 设置发件人
message['To'] = Header(self.revices, 'utf-8') # 收件人有问题=========?utf-8?q?18636174933=40163=2Ecom?=
message['Subject'] = Header(header_name, 'utf-8') # 标题
flag = None
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(self.smtpServer, 25) # 链接服务器
smtpObj.login(smtpUser, smtpPassword) # 用自己的邮箱登录
# smtpObj.sendmail(smtpUser, [self.smtpUser], message.as_string()) # 给自己就可以,给别人就554
smtpObj.sendmail(smtpUser, [self.revices], message.as_string())
flag = True
except Exception as e:
print(e)
flag = False
finally:
smtpObj.quit()
if flag:
print('邮件发送成功')
else:
print('邮件发送失败')
if __name__ == '__main__':
smtpUser = 'xxxxxx@163.com' # 发件人邮箱
smtpPassword = 'xxxxxxxxxx' # 发件人密码
revices = 'xxxxxxxx@163.com' # 接受者邮箱
user = '我自己'
text = 'xxxxxxxx' # 邮箱正文
title = 'xxxxxxxx' # 邮箱标题
smtpObj = Send_email_for_163(smtpUser, smtpPassword, revices)
smtpObj.send_email(user,text, title)