您的位置:首页 > 编程语言 > Python开发

python如何发邮件, 附件及调用短信接口

2018-03-22 17:33 477 查看
首先,为了读者能够更好的去理解python里面如何完成这些功能的,我会尽可能的将代码简化!

我们要怎么完成利用python去发邮件呢?
首先,我们要使用一个邮件服务器,可以是(126,163,qq,yahoo等),也可以是自己搭建的服务器(最好),
然后开启SMTP服务,拿到服务器给你的授权以后就可以进行下一步操作了.
代码如下:#导入python里面的这个stmplib这个库
import smtplib
#导入邮件文本模块
from email.mime.text import MIMEText

#设置SMTP服务器
SMTPServer = "smtp.163.com"
#设置发邮件的地址,也就是自己的邮箱地址.
sender = "nj17****8@163.com"
#邮箱的密码,注意这是你自己的密码哦
passwd = "lalalala**"

#设置发送的内容
message = "今晚上山打老虎!"
#转换为邮件文本,也就是用我们导入的模块email.mime.text的MIMEText方法进行转换
msg = MIMEText(message)
#设置邮件标题
msg["Subject"] = "来自帅哥的问候"
#设置发送者的名称
msg["From"] = sender

#设置好一切基本条件以后,万事俱备了,开始进行连接了.
#创建STMP服务器 ,连接STMP的服务器
mailServer = smtplib.SMTP(SMTPServer, 25)# 25是邮件专用的端口哦.
#登录邮箱
mailServer.login(sender, passwd)
#发送邮件
mailServer.sendmail(sender, ["957**8@qq.com", "4449***454@qq.com", "nj17449***8@163.com"], msg.as_string())
#发送完毕以后,记得退出,怎么样,是不是很简单呢?
mailServer.quit()知道怎么发邮件以后,我们来讲讲怎么在邮件里面加附件进行发送.
先介绍一下下面两个库:

代码如下:from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from smtplib import SMTP
#以上分别导入了 MIMEMultipart模块,和SMTP模块,MIMEText邮件文本模块

def main():
sender = SMTP('smtp.163.com')    #连接服务器邮箱
sender.login('nj174***8@163.com', 'n*****58') #输入账号密码进行登录
message = MIMEMultipart()    #创建一个邮件体
message['From'] = 'Mr.Liu'    #设置来自谁,也就是谁发,俗称发件人
message['To'] = '瓜西西'      #设置发送给谁 , 俗称收件人
message['Cc'] = 'shuling@10***ne.com'    #设置抄送给谁
message['Subject'] = '请查收附件中的数据'        #设置邮件的文本内容
text_msg = MIMEText('附件中又本月关键数据,请查收!', 'plain', 'utf-8') #利用MIMEText邮件文本模块进行转化
message.attach(text_msg)    #利用邮件体的attach方法将 邮件文本 '粘'上去
        
att2 = MIMEText(open('1000phonejavaee.pdf', 'rb').read(), 'base64', 'utf-8') # rb是二进制的,如果要发的是其他的用'r'
att2['Content-Type'] = 'application/pd'    #这里的Content-Type为多用途互联网邮件扩展类型
att2['Content-Disposition'] = 'javaee1000phone.pdf'    #设置发送后附件的名字
message.attach(att2)    #将att2邮件文本也'粘'上去

sender.sendmail('nj174451648@163.com', ('cd_ios_1605@126','444944454@qq.com'), message.as_string())
    sender.quit()
#这样就完成附件的添加发送了

if __name__ == '__main__':
main()关于使用短信接口发送短信,在每个服务商那都已经有现成的代码了,我在这也就不说明了.
但是需要注意的是,发送的内容必须是合法有效的,否则短信提供商会直接拦截你的请求.
代码如下:# 接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。
# 账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html
# 注意事项:
# (1)调试期间,请用默认的模板进行测试,默认模板详见接口文档;
# (2)请使用APIID(查看APIID请登录用户中心->验证码短信->产品总览->APIID)及 APIkey来调用接口;
# (3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;

# !/usr/local/bin/python
# -*- coding:utf-8 -*-
import http.client #httplib改这个
import urllib
import random

host = "106.ihuyi.com"
sms_send_uri = "/webservice/sms.php?method=Submit"

# 用户名是登录用户中心->验证码短信->产品总览->APIID
account = "C66644311"
# 密码 查看密码请登录用户中心->验证码短信->产品总览->APIKEY
password = "d4bc030daa42ae3dc32ea8cbfa5abf9c"

def send_sms(text, mobile):
params = urllib.parse.urlencode(#使用这个模块功能将内容进行编码
{'account': account,        #账号,上面已经设置
'password': password,      #密码
'content': text,           #发送的内容
'mobile': mobile,          #手机号码
'format': 'json'})         #默认格式
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"} #设置请求头
conn = http.client.HTTPConnection(host, port=80, timeout=30)    #设置连接的服务器地址,端口,以及超时时间
conn.request("POST", sms_send_uri, params, headers)    #利用请求头去发起请求,POST是发送,
response = conn.getresponse()                          #获取请求后的结果
response_str = response.read()                         #读取结果
conn.close()                                           #关闭coon连接
return response_str                                    #返回结果的字符串

if __name__ == '__main__':
mobile = "18202835067"
#生成一个0-9的数字组成的随机验证码
Random6 = str(random.randint(0,9)) + str(random.randint(0,9))+str(random.randint(0,9))+str(random.randint(0,9))+str(random.randint(0,9))
print(Random6)
text = ("您的验证码是:%i。请不要把验证码泄露给其他人。" % int(Random6))
send_sms(text, mobile)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python