Python调取邮箱发送邮件
一 . 发送普通邮件
数据
res = [ { "Roles": ".流浪法师 ", "name": "大魔王", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "圣枪游侠", "name": "奥巴马", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 800 }, { "Roles": "暗黑元首", "name": "球女", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 800 }, { "Roles": "暗夜猎手", "name": "VN ", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 500 }, { "Roles": "傲之追猎者", "name": "狮子狗 ", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "爆破鬼才", "name": "炸弹人", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "冰晶凤凰", "name": "冰鸟", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 800 }, { "Roles": "惩戒之箭", "name": "箭男", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "大发明家", "name": "大头", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 400 }, { "Roles": "堕落天使", "name": "莫甘娜", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 600 }, { "Roles": "刀锋之影", "name": "男刀", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "德邦总管", "name": "菊花信", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "德玛西亚皇子", "name": "皇子", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "德玛西亚之力", "name": "草丛伦", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "德玛西亚之翼", "name": "鸟人", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "恶魔小丑", "name": "小丑", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "发条魔灵", "name": "发条", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "法外狂徒", "name": "男枪", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "放逐之刃", "name": "锐雯", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 }, { "Roles": "风暴之怒", "name": "风女", "rule": "规矩", "Combat_effectiveness": 1000, "price" : 1500 } ]
代码
import datetime import smtplib from email.mime.text import MIMEText today = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') li = [] for table in res: if table['price'] - table["Combat_effectiveness"] != 0: rule2 = "规矩" else: rule2 = "规矩" if table["rule"] == rule2: d = { "time": today, "Roles": table["Roles"], "name": table["name"], "price": table["price"], "Combat_effectiveness": table["Combat_effectiveness"], } li.append(d) li2 = [] for i in li: res = "时间:{} , 角色:{} , 名字:{} , 战斗力:{} , 价格:{}".format(i["time"],i["Roles"],i["name"],i["Combat_effectiveness"],i["price"]) li2.append(res) li3 = "\n".join(li2) print("===============",li3) # 设置服务器所需信息 # 邮箱服务器地址 mail_host = 'smtp.xxx.com' # 用户名 mail_user = 'xxxxxxx' # 密码(部分邮箱为授权码) mail_pass = 'xxxxxxx' # 邮件发送方邮箱地址 sender = 'xxxx.xx.xxx' # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receivers = ['xxxx@163.com','xxxxxx@163.com'] # 设置email信息 # 邮件内容设置 , str message = MIMEText(li3, 'plain', 'utf-8') # 邮件主题 message['Subject'] = '主人来信息了' # 发送方信息 message['From'] = sender # 接受方信息 message['To'] = receivers[0] # 登录并发送邮件 try: smtpObj = smtplib.SMTP() # 连接到服务器 smtpObj.connect(mail_host, 25) # 登录到服务器 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) # 打印错误
效果
二 . 发送附件形式
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication result = { "table_name": "邮件人员清单.xlsx", "content": "这是一封发送附件的邮件", "email_li": ["xxxxxx@163.com"] } table_name = result["table_name"] content = result["content"] email_li = result["email_li"] title_name = table_name.split(".")[0] _user = 'user_name' _pwd = 'passwd' _to = email_li msg = MIMEMultipart() msg["Subject"] = title_name msg["From"] = _user msg["To"] = _to[0] part = MIMEText(content) msg.attach(part) # Excel存放路径 file_name = "G:/rest/{}".format(table_name) part = MIMEApplication(open(file_name, 'rb').read()) part.add_header('Content-Disposition', 'attachment', filename=table_name) msg.attach(part) s = smtplib.SMTP('xxxxxxx.qq.com', timeout=25) s.login(_user, _pwd) s.sendmail(_user, _to, msg.as_string()) s.close()
注意 : 处理多种形态的邮件主体我们需要 MIMEMultipart 类,而处理图片需要 MIMEImage 类, TXT文本需要 MIMEText 类.
但是如果有的不知道,去百度或者可以都用 MIMEApplication 类 (万能的类)
效果 :
三 . 发送图片
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage from email.mime.text import MIMEText result = { "table_name": "一张图片", "content": "图片", "email_li": ["xxxxxx@163.com"] } table_name = result["table_name"] content = result["content"] email_li = result["email_li"] _user = 'xxxxxxxx' _pwd = 'xxxxxxx' _to = email_li msg = MIMEMultipart() msg["Subject"] = table_name msg["From"] = _user msg["To"] = _to[0] part = MIMEText(content) msg.attach(part) img_name = "图标.png" img_file = "G:/rest/{}".format(img_name) imageApart = MIMEImage(open(img_file, 'rb').read(), img_name.split('.')[-1]) imageApart.add_header('Content-Disposition', 'attachment', filename=img_name) msg.attach(imageApart) s = smtplib.SMTP('xxxxxx.stmp', timeout=25) s.login(_user, _pwd) s.sendmail(_user, _to, msg.as_string()) s.close()
效果 :