打造自己的天气预报之(二)——邮件发送天气信息

9 篇文章 0 订阅
9 篇文章 1 订阅

上一篇里,我们实现了从网上抓取天气信息。详情请移步:
打造自己的天气预报之(一)——获取天气信息
这一次,我们要实现用邮件把天气信息发送到指定邮箱里。

发送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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值