python3发送邮件
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import psutil
import socket my_sender='1028540310@qq.com' # 发件人邮箱账号
my_pass = 'xxxxxxxxxxxxxxx' # 发件人邮箱密码(当时申请smtp给的口令)
my_user2 ='1028540310@qq.com' # 收件人邮箱账号,我这边发送给自己
my_user = 'xiezc@szmall.com' hostname = socket.gethostname() #获取主机号
ipaddr = socket.gethostbyname(hostname) #获取ip地址
net_info = "ip/主机名"+hostname+':'+ipaddr ps_dif = psutil.disk_partitions() #获取分区
ps_fen = psutil.disk_usage('/') #获取根目录分区 一般系统磁盘挂载在根目录
div_gb_factor =(1024.0 ** 3) available = round(ps_fen.free/div_gb_factor,2)
percent = '%.2f'%(ps_fen.percent) '''磁盘具体信息'''
total_mem = "磁盘总量: %fGB" % (ps_fen.total/div_gb_factor)
used_mem = "磁盘已使用量: %fGB" % (ps_fen.used/div_gb_factor)
free_mem = "磁盘未使用量: %fGB" % (ps_fen.free/div_gb_factor)
perce_mem = "磁盘已使用百分比: %f" % (ps_fen.percent) info_mem = "磁盘详细信息:"+'\n'+total_mem+used_mem+free_mem+perce_mem # yag = yagmail.SMTP(user='1028540310@qq.com', password='hrttmajzjrbgbebc', host='smtp.qq.com', port='465') if float(available) <5 or float(percent) >9.0 :
contrent = "磁盘空间少于5G了,请检查磁盘"+'\n'+info_mem+'\n'+net_info
else:
contrent = "磁盘容量正常,请放心使用"+'\n'+info_mem+'\n'+net_info def mail():
ret=True
try:
msg=MIMEText(contrent,'plain','utf-8') # 括号里的内容
msg['From']=formataddr(["小狐狸",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
#msg['To']=formataddr(["开发者",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="系统监控日志" # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,my_user2],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit()# 关闭连接
except Exception as e:# 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret=False
print(e)
return ret ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
下面是我做到一个温馨小案例,每天给自己和朋友发送邮件,每天都会自动更新一句话和图片,让自己有个好心情。数据是从金山词霸接口得来的。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import yagmail
import requests
import urllib.request #py3中urllib2改成了urllib.requests
import os
yag = yagmail.SMTP(user='xxxxx@qq.com',password='xxxxx',host='smtp.qq.com',port='465')
url = "http://open.iciba.com/dsapi/"
r = requests.get(url)
body = r.json()['note'] image = r.json()['fenxiang_img']
name = image.split('/')[-1]
print(body)
path = "/opt/img"
if not os.path.exists(path):
os.mkdir(path) s = urllib.request.urlretrieve(image,r'/opt/img//%s'%name) #yag.send(to='xxxxx@qq.com', subject='测试邮件', contents=[body,'深圳政府采购接口测试.py']) jpg_path = path+'/%s'%name try:
yag.send(to=['2559567285@qq.com','429405037@qq.com','1028540310@qq.com'], subject='一封特殊的邮件', contents=[body,jpg_path])
except Exception as e:
print(e)
else:
print('邮件发送成功')
finally:
print('程序已执行') 当然数据还可以自己建文本自己弄数据,个性DIY自己的邮件。
python3发送邮件的更多相关文章
- 用Python3发送邮件详解
[整个邮件系统是怎样工作的] 邮件自互联网诞生之初就有了,它和web服务一样也是采用的c/s架构,比如我们常见的邮件客户端有outlook.foxmail这些邮件客户端软件. 当我们要发邮件时客户端就 ...
- Python3发送邮件功能
Python3实现邮件发送功能 import smtplib from email.mime.text import MIMEText # 导入模块 class SendEmail: def send ...
- 关于python3 发送邮件
一:发送文本信息 from email.mime.text import MIMEText from email.header import Header from smtplib import SM ...
- python3发送邮件01(简单例子,不带附件)
# -*- coding:utf-8 -*-import smtplibfrom email.header import Headerfrom email.mime.text import MIMET ...
- python3 发送邮件
import smtplibfrom email.mime.text import MIMETextdef SendEmail(fromAdd,toAdd,subject,text): _pwd = ...
- python3 发送邮件功能
阿-_-涵的博客 #首先写一个模块功能,发邮件功能打包起来 from smtplib import SMTP from email.mime.text import MIMEText def send ...
- python3 发送邮件添加附件
from email.header import Headerfrom email.mime.application import MIMEApplicationfrom email.mime.mul ...
- python3发送邮件02(简单例子,带附件)
#!/usr/bin/env python# -*- coding:UTF-8 -*- import osimport smtplibfrom email.header import Headerfr ...
- Python3 SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...
随机推荐
- Visifire实现统计图
/// <summary> /// 柱形图 /// </summary> public static Chart InitCompareChart(string fundNam ...
- magento 的一些关于addFieldToFilter的查询
1,匹配country_id的首字母,查询国家,返回数组 //查询国家数据集 $countryCollection=Mage::getResourceModel('directory/country_ ...
- bootstrap-table 表头和内容对不齐
问题: bootstrap-table.js 找到 BootstrapTable.prototype.resetView if (this.options.showHeader && ...
- Javascript 基础夯实 —— 使用 webWorker 实现多线程(转)
原文链接:https://zhuanlan.zhihu.com/p/29219879 当我们开始学习 javascript 的时候,我们就知道 js 其实是单线程的,所以当我们在浏览器中运行某些耗时算 ...
- Sublime Text 3常用插件—Emmet
原文链接:http://www.cnblogs.com/easy-blue/p/6617852.html 摘要: 安装请看上一篇Sublime Text—安装,和sublime自带快捷键一起用,写ht ...
- POJ 2914
无向图全局最小割算法 求 G=(V, E)中任意 s-t 最小割的算法: 定义w(A, x) = ∑w(v[i], x),v[i] A ∈ 定义 Ax 为在x 前加入 A 的所有点的集合(不包括 ...
- [React] Refactor componentWillReceiveProps() to getDerivedStateFromProps() in React 16.3
The componentWillReceiveProps() method is being deprecated in future version of React (17). Many of ...
- ajax跨域POST时执行OPTIONS请求服务端返回403forbidden的解决方法
ajax访问服务端restful api时,由于contentType类型的原因,浏览器会先发送OPTIONS请求. 本人服务端用的是spring mvc框架,web服务器用的是tomcat的,以下给 ...
- 一致性hash 算法 (转)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- [转载]ROS_LOG保存方法
原文地址:ROS_LOG保存方法作者:东咚... 把Service中的WWW的IP设置为允许日志保存服务器访问的范围 System->Logging,点击 "Actions" ...