上一篇里,我们实现了从网上抓取天气信息。详情请移步:
打造自己的天气预报之(一)——获取天气信息
这一次,我们要实现用邮件把天气信息发送到指定邮箱里。
发送Email,可以使用smtplib模块中的SMTP类连接到指定的SMTP服务器,并返回一个SMTP对象。然后使用SMTP对象的login方法提交认证信息(即邮箱的帐号和密码)。接下来就可以使用SMTP对象的sendmail方法给指定的邮箱地址发送邮件了。邮件内容可以使用email模块的Message类生成邮件内容。下面我们来具体实现一下。
# -*- coding: UTF-8 -*-
'''
Created on 2011-11-27
Send email
@author: think3t
'''
import smtplib, email, re
from email.Message import Message
from email.Header import Header
def sendmessage(myemail, mypass, to, subj, content):
"using server send a email"
smtpport = '25' #SMTP端口号
smtpuser = re.match('^\w+', myemail).group() #根据Email地址获取用户名
smtpserver = re.sub('^\w+@', 'smtp.', myemail) #根据Email地址获取SMTP服务器地址
server = smtplib.SMTP(smtpserver, smtpport) #构造SMTP对象
server.starttls() #启用TLS模式
server.login(smtpuser, mypass) #验证用户名及密码
msg = Message() #构造邮件信息
msg['Mime-Version'] = '1.0' #Mine的版本
msg['From'] = smtpuser #发送邮箱地址
msg['To'] = to #接收邮箱地址
msg['Subject'] = Header(subj, 'UTF-8') #邮件主题,注意此处使用了UTF-8编码,不然发送中文乱码
msg['Date'] = email.Utils.formatdate() #发送时间
msg.set_payload(content, 'UTF-8') #邮件正文,此处也使用了UTF-8编码
try: #使用try捕获异常
failed = server.sendmail(smtpuser, to, str(msg)) # may also raise exc
except Exception , ex:
print Exception, ex
print 'Error - send failed' #捕获到异常说明发送失败
else:
print "send success!" #没有异常就发送成功了
if __name__ == "__main__":
to = 'test@139.com' #发送到139邮箱有短信提醒
subj = 'Python邮件中文测试'
text = 'Python邮件中文测试'
sendmessage('test@somesmtp.com', 'password', to, subj, text) #前两个参数改成自己的邮箱地址和密码
程序很简单,但是要注意一点,那就是邮件主题和正文都要使用UTF-8编码格式,不然发送中文就成了乱码。我一开始只对邮件正文进行了UTF-8编码,结果中文乱码。后来上网查了下资料才知道,邮件主题也要进行编码设置。
当然,例程只是实现了发送邮件,要发送天气预报需要结合上一篇打造自己的天气预报之(一)——获取天气信息,将本例中的邮件主题和邮件正文改成对应的天气预报信息即可。
到此为止,天气预报程序算是实现了基本功能,接下来我会在这个程序原型上,不断增加新功能。首先要给程序添加一个GUI界面,请看下一篇:打造自己的天气预报之(三)——给程序加个图形用户界面(GUI)
分享到:
相关推荐
天气预报信息——易语言模块 天气预报信息——易语言模块
微信小程序——天气预报(截图+源码).zip 微信小程序——天气预报(截图+源码).zip 微信小程序——天气预报(截图+源码).zip 微信小程序——天气预报(截图+源码).zip 微信小程序——天气预报(截图+源码).zip ...
以下是对"IOS应用源码——天气预报.zip"这一主题的详细分析。 首先,我们需要理解iOS应用的基础架构。iOS应用主要基于Apple的Swift或Objective-C编程语言构建,使用Xcode集成开发环境进行开发。在这个源码中,我们...
人工智能技术能否提高地面气温预报的精度——记AI Challenger 2018全球天气预报挑战赛.pdf
本压缩包包含的“安卓Android源码——天气预报源码.zip”是一个完整的Android应用程序项目,旨在实现天气预报功能。这个项目对于学习Android应用开发,尤其是涉及网络请求、数据解析、UI设计以及动态更新的开发者来...
通过调用webservice显示全国天气预报
├─05 实战Google Maps API之三——地图天气预报服务 │ ├─5.1 在Google地图上显示天气预报 │ │ ├─5.1.2 利用Google AJAX Feed API加载RSS文档 │ │ └─5.1.3 YWeather()类的构造 │ └─5.2 │ └─...
"藏经阁-机器能预报多久后的天气——机器学习和可预报性" 本资源概括了机器学习在天气预报中的应用,特别是使用机器学习算法来预测未来多久后的天气。文章首先介绍了天气预报的基本概念和挑战,然后讨论了机器学习...
"IOS应用源码——天气预报.rar"提供了一个完整的iOS天气预报应用的源代码,这为开发者提供了研究和学习iOS应用开发,特别是与天气相关的API集成、UI设计以及数据处理等方面知识的机会。 首先,iOS应用开发主要使用...
描述部分只有一句:"Android源码——天气预报源码.zip",与标题相同,没有提供额外的信息。但从标题中我们可以推测,这个压缩包包含了一个完整的天气预报应用的源代码,可能是为了教学、研究或者开发者参考使用。 ...
基于Android的天气预报查询软件 1.可以罗列出全国所有的省、市、县。 2.可以查看全国任意城市的天气信息。 3.可以自由地切换城市,去查看其他城市的天气 4.提供手动更新以及后台自动更新天气的功能。 可以根据当前...
"IOS应用源码——闹钟加天气预报.rar"是一个示例项目,展示了如何将这两种功能整合到一个应用程序中。这个压缩包包含了一个完整的源代码实现,对于iOS开发者来说,它是一个学习和参考的宝贵资源。 首先,我们要关注...
———————————————— 版权声明:本文为CSDN博主「Android毕业设计源码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:...
这个名为"安卓Android源码——中文天气预报程序.zip"的压缩包文件,显然是一个包含了一个实现中文天气预报功能的Android应用源代码的项目。通过分析这个项目,我们可以深入学习Android应用程序开发,特别是关于数据...
Android源码——城市天气预报源码.zip
在信息技术飞速发展的今天,获取实时天气预报信息已经成为日常生活中的常态。本文将详细介绍如何使用Visual C++ 6(简称VC6)开发一个简单但实用的天气预报查询程序。这个程序允许用户自行设定查询的城市,并能从...
一个简单的天气项目
该项目的系列介绍文章:https://blog.csdn.net/weixin_50964512/article/details/125710864