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. mongodb--update高级用法

    配合update使用的函数 $set 修改某列的值 $unset 删除某个列 $rename 重命名某个列 $inc 增长某个列 $setOnInsert 当upsert为true时,并且发生了ins ...

  2. Remote Desktop安卓软件实现手机远程控制电脑

    这篇文章写的是利用Remote Desktop安卓软件实现手机远程控制电脑. 电脑上的操作: 鼠标右击计算机>属性>远程设置>计算机名 如下图:

  3. Spring Boot项目在Mac下使用Maven启动时碰到的神奇问题:Unregistering JMX-exposed beans on shutdown

    错误如下: ➜ springboottest1 mvn spring-boot:run [INFO] Scanning for projects... [INFO] [INFO] ---------- ...

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

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

  5. jsp页面自动换行

    其实只要在表格控制中添加一句 <div style="word-break:break-all">就搞定了.</div>其中可能对英文换行可能会分开一个单词 ...

  6. SQL Server阻塞诊断

    在数据仓库维护过程中,经常会出现定时更新程序和查询SQL发生冲突而引起阻塞的情况,需要进行SQL Server诊断. SQL Server诊断一般会用到2个视图:sys.sysprocesses(系统 ...

  7. Gitlab 灾备措施

    Gitlab创建备份 使用Gitlab一键安装包安装Gitlab非常简单,同样的备份恢复与迁移也非常简单.使用一条命令即可创建完整的Gitlab备份: gitlab-rake    gitlab:ba ...

  8. AJAX异步删除操作

    @Ajax.ActionLink("删除", "Delete", new {id = user.Id}, ajaxOption) @{ var ajaxOpti ...

  9. 装饰模式(Decorator)C++实现

    装饰模式 层层包装,增强功能.这就是装饰模式的要旨!装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能.它把需要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象. 意图: 动 ...

  10. JAVA代理方式使用示例总结

    JAVA代理方式使用示例总结 一.    代理方式概括 Java的代理方式主要包含了静态代理,动态代理两种方式,其中,动态代理根据实现的方式不同,又可以划分为jdk动态代理和cglib动态代理. 二. ...