加载中......
输入验证码,即可复制
微信扫码下载好向圈APP, 登陆后即可进入消息页面查看验证码
只需要3秒时间
应用运维日常工作中需要对应用系统的业务情况制定每日业务交易报表,可通过crontab配置定时执行python发送邮件脚本获取交易报表,以下分享两个脚本,一个不带附件的,一个带附件。

一、不带附件

#coding: utf-8

import smtplib

from email.header import Header

from email.mime.text import MIMEText

# 第三方 SMTP 服务

mail_host = "smtp.163.com" # SMTP服务器

mail_user = "uprick@163.com" # 用户名

mail_pass = "adhilahwd " # 授权密码,非登录密码

sender = '11111@163.com' # 发件人邮箱(最好写全, 不然会失败)

receivers = ['22222@163.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

content = '今日报表,系统成功率为100%,业务成功率为98.63%'

title = '今日业务系统报表 # 邮件主题

def sendEmail():

message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码

message['From'] = "{}".format(sender)

message['To'] = ",".join(receivers)

message['Subject'] = title

try:

smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465

smtpObj.login(mail_user, mail_pass) # 登录验证

smtpObj.sendmail(sender, receivers, message.as_string()) # 发送

print("mail has been send successfully.")

except smtplib.SMTPException as e:

print(e)

def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):

email_client = smtplib.SMTP(SMTP_host)

email_client.login(from_account, from_passwd)

# create msg

msg = MIMEText(content, 'plain', 'utf-8')

msg['Subject'] = Header(subject, 'utf-8') # subject

msg['From'] = from_account

msg['To'] = to_account

email_client.sendmail(from_account, to_account, msg.as_string())

email_client.quit()

if __name__ == '__main__':

sendEmail()

# receiver = '***'

# send_email2(mail_host, mail_user, mail_pass, receiver, title, content)

执行脚本

发送邮件pyhon脚本-1.jpg

结果如下图

发送邮件pyhon脚本-2.jpg

二、带附件

#coding: utf-8

import time

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

ISOTIMEFORMAT='%Y%m%d'

def sentemail():

caodate=str(time.strftime(ISOTIMEFORMAT, time.localtime()))

host = 'smtp.163.com' # 设置发件服务器地址

port = 465 # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式

sender = '111111@163.com' # 设置发件邮箱

pwd = 'adadajd' # 设置发件邮箱的密码,qq邮箱的授权码,等会登陆会用到

receiver0 = '22222@qq.com' # 设置邮件接收人

receiver1 = '11111@163.com'

body = '<h1>'+caodate+'</h1><p>交易报表</p>' #发送文件的内容

# 设置邮件正文,这里是支持HTML的

msg = MIMEText(body, 'html') # 设置正文为符合邮件格式的HTML内容

message = MIMEMultipart()

message['subject'] = caodate + '交易报表' # 设置邮件标题

message['from'] = sender # 设置发送人

message['to'] = receiver0 # 设置接收人

message['to'] = receiver1

message.attach(msg)

filename='tmp.txt' # 构造附件1,传送当前目录下的 filename 文件

att1 = MIMEText(open(filename, 'rb').read(), 'base64', 'utf-8')

att1["Content-Type"] = 'application/octet-stream' # 注意这里是个坑,之前没有这样写的话发送文件就会变成bin格式的

att1.add_header('Content-Disposition', 'attachment', filename='tmp.txt')

# att1["Content-Disposition"] = 'attachment; filename="'+filename+'"' # bin格式

message.attach(att1)

try:

s = smtplib.SMTP_SSL(host, port) # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL

s.login(sender, pwd) # 登陆邮箱

s.sendmail(sender, receiver0, message.as_string())# 发送邮件!

print ('邮件发送成功')

except smtplib.SMTPException as e:

print(e)

print ('邮件发送失败')

if __name__ == '__main__':

sentemail()

结果如下图

发送邮件pyhon脚本-3.jpg

技术小白一枚,脚本都是从网上学习而来的,很多不能用,这两个是我学习认为有用的;如有侵犯请联系删除。
程序员圈
4968 查看 0 0 反对

说说我的看法高级模式

您需要登录后才可以回帖 登录|立即注册

还没人评论此主题哦