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发送邮件的更多相关文章

  1. 用Python3发送邮件详解

    [整个邮件系统是怎样工作的] 邮件自互联网诞生之初就有了,它和web服务一样也是采用的c/s架构,比如我们常见的邮件客户端有outlook.foxmail这些邮件客户端软件. 当我们要发邮件时客户端就 ...

  2. Python3发送邮件功能

    Python3实现邮件发送功能 import smtplib from email.mime.text import MIMEText # 导入模块 class SendEmail: def send ...

  3. 关于python3 发送邮件

    一:发送文本信息 from email.mime.text import MIMEText from email.header import Header from smtplib import SM ...

  4. python3发送邮件01(简单例子,不带附件)

    # -*- coding:utf-8 -*-import smtplibfrom email.header import Headerfrom email.mime.text import MIMET ...

  5. python3 发送邮件

    import smtplibfrom email.mime.text import MIMETextdef SendEmail(fromAdd,toAdd,subject,text): _pwd = ...

  6. python3 发送邮件功能

    阿-_-涵的博客 #首先写一个模块功能,发邮件功能打包起来 from smtplib import SMTP from email.mime.text import MIMEText def send ...

  7. python3 发送邮件添加附件

    from email.header import Headerfrom email.mime.application import MIMEApplicationfrom email.mime.mul ...

  8. python3发送邮件02(简单例子,带附件)

    #!/usr/bin/env python# -*- coding:UTF-8 -*- import osimport smtplibfrom email.header import Headerfr ...

  9. Python3 SMTP发送邮件

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...

随机推荐

  1. HDU 1912

    坑,直接把公路看成X轴来做,然后,排序扫描一下,你懂的. #include <iostream> #include <algorithm> #include <cstdi ...

  2. Win10 中修改cmd字体引发的问题

    Win10 中修改cmd字体引发的问题 学习了:https://www.cnblogs.com/Diryboy/archive/2015/12/05/Use-Consolas-MSYaHei-in-C ...

  3. 用Java做的类似皇家守卫战的游戏

    最近因为数据结构的课设缘故,所以用Java做了一款类似皇家守卫战(本人最钟情的一款PC兼手游的塔防游戏)的游戏.现在把这个游戏放出来,可以下载下来 玩耍 学习,代码中我也做了大量的注释.(运行游戏得带 ...

  4. Redis各种数据类型的使用场景

    Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据 ...

  5. JavaScript:对象

    ylbtech-JavaScript:对象 1. JavaScript Array 对象返回顶部 1. JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值 ...

  6. Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式

    ylbtech-Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式 1.返回顶部 1. 常用的一些Spring MVC的路由写法以及参数传递方式. 这是 ...

  7. 一个php+jquery+json+ajax实例

    json.php <!DOCTYPE html Public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  8. 【React Natvie】React-native-swiper的安装和配置【ES6】

    react-native-swiper轮播图,是我们开发中特别常见的效果,首先感谢编写react-native-swiper的大神,让我们方便了很多.这个框架主要是用来做轮播图,焦点图等,内置了各种样 ...

  9. guice基本使用,配置模块的两种方式(三)

    guice是使用module进行绑定的,它提供了两种方式进行操作. 第一种是继承AbstractModule抽象类. package com.ming.user.test; import com.go ...

  10. CSS简单入门

    - Java攻城狮学习路线 - 一. 什么是CSS CSS指层叠样式表(Cascading Style Sheets),定义如何显示HTML元素 二. CSS语法 /* 选择器 { 声明: 声明:}* ...