1. 基础语法

1.1 发送邮件SMTP

用书上提供的代码一直显示ConnectionClosed 或者554错误,之后换了一种写法,虽然还是不稳定(有时候能发出去有时候就显示554——垃圾邮件错误)

以下是一种发送成功的写法(不稳定):

import smtplib
from email.mime.text import MIMEText
from email.header import Headermsg = MIMEText('Hello from the other side','plain','utf-8')   #正文from_addr = '你的邮箱'                      #发送邮箱地址
password =  '授权码'                        #邮箱授权码,非登陆密码
to_addr = '收件人邮箱'                      #收件箱地址
smtp_server = 'smtp.163.com'               #smtp服务器  在这里用的是163msg['From'] = from_addr                    #发送邮箱地址
msg['To'] = to_addr                        #收件箱地址
msg['Subject'] = '为什么发不出去呢'          #主题server = smtplib.SMTP(smtp_server,25)      #端口465显示connetclosed
#server.set_debuglevel(1)                  #打印出和SMTP服务器交互的所有信息
server.starttls()                          #SSL加密,感觉这部应该可以不要,因为网易本身就是SSL加密
server.login(from_addr,password)           #邮箱登录
server.sendmail(from_addr,[to_addr],msg.as_string())     #邮件发送(发件人,收件人群发列表,内容的字符串形式)
server.quit()                              #退出登录
出现问题

(1)出现554解决方案:

a: 更换邮件主题,不要用“测试”、“test”等主题

b: 使用MIMEtext方法,添加 “From”“To”“Sbuject”关键字,这里采用了这种方法

(2)SSL问题 :ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:777)

将smtplib.SMTP_SSL   更换为  smtplib.SMTP(smtp_server,25)

(3)ConnectionClosed 错误

a:尝试更换端口

b:检查是否开启IMAP/SMTP服务

c:网易163邮箱好像不能频繁发送,需要等待一段时间后在发送就可以了...

(4)认证错误

确保账号填写正确后,密码输入是授权码,而不是邮箱设定的密码

1.2 IMAP

出现问题

(1)在安装pyzmail的时候出现安装错误:

如果你使用的是python3.6的话,有一个专门的包,执行以下代码就可以了。

pip install pyzmail36
import pyzmail

1.3 用Twilio发送短信

(1)注册账号

在 https://www.twilio.com/ 注册新账号,需要验证一个手机,防止用该账号给别的手机发送垃圾短信,得到几个参数,在之后的程序中用到:账户SID,账户AUTH认证标志,你的Twilio号码

(2)发送短信

from twilio.rest import Client
accountSID = 'ACXXXX'          #账户SID
authtoken = 'XXXXXX'           #账户AUTH认证标志
myTwilionumber = '+XXXXX'      #你的Twilio号码
myphonenumber = '+86XXXXX'     #接收的手机号twiliocli = Client(accountSID, authtoken)    #创建一个Client对象
msg = twiliocli.messages.create(body=message, from_=myTwilionumber, to=myphonenumber)    #创建message(正文内容,发件人,收件人)

(3)发送状态

msgsid = msg.sid                               #显示消息sid
updatemsg = twiliocli.messages.get(msg.sid)    #根据SID更新消息
print(updatemsg.status)                        #查询发送状态
datetime = msg.date_created                     #查询datetime创建时间   date_sent 为发送时间
time = datetime.strftime('%Y/%m/%d %H:%M:%S')
print(time)

不过在调用的过程中,显示没有get属性不知道为啥...

2. 实例应用

3. 课后习题

3.1 天气预报短信提醒程序

首先从天气网站调用API得到某地天气,进行JSON解析之后,将信息通过Twilio模块发送给指定号码。本来写了一个具有归属地和手机号码的字典数据结构,想要实现消息的群发,不过Twilio好像只能发送给自己?

#!python3
#-*- coding: utf-8 -*-
# 2018/4/13 0013  10:41
#天气预报短信提醒程序  输入城市,通过twilio发送短信import requests,json,sys
import twilio
import datetime
import time
from twilio.rest import Client
#发送短信列表,手机号-地点
location = {'X1':'+86XXXXXXXXXXX',      'X2':'+86XXXXXXXXXXX'
}accountSID = 'ACXXXXXXXXXXXXXXX'
authtoken = 'XXXXXXXXXXXXXXXXXXX'
myTwilionumber = '+XXXXXXXXXXXXXXXXX'
myphonenumber = location.values()          #接收的手机号def textme(message):twiliocli = Client(accountSID, authtoken)msg = twiliocli.messages.create(body=message, from_=myTwilionumber, to=myphonenumber)for city in location.keys():weatherurl = 'https://www.sojson.com/open/api/weather/json.shtml?city=%s'%city    #天气APIhello = '%s天气'%city     #短信开头response = requests.get(weatherurl)response.raise_for_status()weatherdata = json.loads(response.text)data = weatherdata['data']forecast = data['forecast']j = 0text = []sendsms = []for i in range(1):   #i为每一天的数据,字典类型content = []content.append(hello)for k,v in forecast[i].items():text.append(v)             #将天气预报中文信息加到列表中for t in text:if isinstance(t, str) :    #去除不是string的参数,防止报错content.append(t)      #添加到一个新的列表contentx = '\n'.join(content)       #twilio发送list数据时,只会发送第一项,所以要链接为字符串print(x)textme(x)                           #调用发短息模块time.sleep(4)

TBC。。。明天再写

Python让繁琐工作自动化——chapter16 发送电子邮件和短信相关推荐

  1. python—让繁琐工作自动化

    python,在占领国一段时间的朋友圈,是关于编程的东西.大都是是扫码进入学习群之类的东西.只是不知道哪些当时刷圈的小伙伴们学的怎么样了,大致也有一两个月的时间. 为什么提起这个,因为最近也看到一些p ...

  2. 在iOS当中发送电子邮件和短信

    iOS实现发送电子邮件的方法很简单,首先导入MessageUI.framework框架,然后代码如下: 1 #import "RPViewController.h" 2 3 //添 ...

  3. 《Python编程快速上手——让繁琐工作自动化》第2版的中文版上市了

    第2版基于Python3.X重磅升级,更新内容超30%,不仅更新了众多项目案例,还加强了立体化学习体验,增加了随书视频.在线编程练习环境和社群互助学习体验. 这本书成功破圈编程界,为零基础.从未接触过 ...

  4. Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址

    一.前言 如今,人们面临的大多数任务都可以通过编写计算机软件来完成.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过Python编程,我们能够解决现实生活中的很多任务. 今天给 ...

  5. python经典书记必读:Python编程快速上手 让繁琐工作自动化

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/69/ 来源:python黑洞网,专注 ...

  6. Python编程快速上手,让繁琐工作自动化(附下载)

    今天给大家分享一份Python程序员的圣经--<Python编程快速上手:让繁琐工作自动化>.这是本面向实践的Python编程实用指南. 目录 第一章 Python基础 第二章 控制流 第 ...

  7. python自动化办公入门书籍推荐-好书推荐 | Python 如此神奇,让繁琐工作自动化...

    原标题:好书推荐 | Python 如此神奇,让繁琐工作自动化 Python 如此神奇,让繁琐工作自动化 编程的威力 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Al Sweigart ...

  8. python 复制文件并重命名_好书推荐 | Python 如此神奇,让繁琐工作自动化

    优质文章,第一时间送达! Python 如此神奇,让繁琐工作自动化 编程的威力 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Al Sweigart 的室友曾经只花了几个小时,就写出了一 ...

  9. Python编程快速上手让繁琐工作自动化中文高清完整版PDF带书签

    简介 如今,人们面临的大多数任务都可以通过编写计算机软件来完成.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过Python编程,我们能够解决现实生活中的很多任务. 本书是一本 ...

  10. python电子书在线阅读-Python编程快速上手 让繁琐工作自动化

    内容提要 作者简介 技术评审者简介 致谢 译者序 会编程的人不一样 前言 本书的读者对象 编码规范 什么是编程 什么是Python 程序员不需要知道太多数学 编程是创造性活动 本书简介 下载和安装Py ...

最新文章

  1. 2019秋招AI岗位竞争究竟有多激烈?
  2. webpack 3 零基础入门教程 #13 - 生产环境 vs 开发环境
  3. SAP云平台和SAP传统Netweaver系统互联的技术方式
  4. 初尝微信小程序2-基本框架
  5. 日期格式化时注解@DateTimeFormat无效的问题分析
  6. 禁止复制粘贴_网页禁止你复制粘贴?新同事教我这三招,全网内容随我复制
  7. cad多个窗口并排显示_高版本CAD如何显示阵列窗口?
  8. 换一种途径看信息,享受快捷 RSS阅读----willack.liu[原创]
  9. deepinv2 添加打印机_Deepin系统上安装使用HP惠普打印机的方法
  10. Python拟合SHARP红外测距传感器相关数据
  11. Dagger2的简单使用及基本原理
  12. matlab数字转换罗马数字,罗马数字(1到1000) 1到1000的叠加是多少
  13. Freyja2版本对分库分表的处理方式
  14. 【QT】缺少Qt5Widgetsd.dll等文件的问题
  15. FBX SDK 总结之中文问题
  16. 「一题多解」【CodeForces 85D】Sum of Medians(线段树 / 分块)
  17. ant调用cmd命令行
  18. Linux之计划任务与系统安全(cron周期性计划任务)
  19. 智力题:最短时间过桥问题
  20. Python3 爬取Boss直聘网 工作基本信息(数据清洗)

热门文章

  1. python数据分析之(6)简单绘图matplotlib.pyplot
  2. mask rcnn数据转换为tfrecord数据
  3. SPPNet算法解析
  4. Python socket粘包解决
  5. CAS实现单点登录SSO执行原理探究超详细
  6. ArcGIS中修改面图层中相邻面的公共边
  7. 《深度学习Python实践》第14章——自动流程
  8. 《剑指offer》面试题22——栈的压入、弹出序列(C++)
  9. 数据结构-----环形链表
  10. html lt;tablegt;,HTML布局lt;divgt;orlt;tablegt;,