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

首先,为了读者能够更好的去理解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()

知道怎么发邮件以后,我们来讲讲怎么在邮件里面加附件进行发送.

先介绍一下下面两个库:

email.mime.multipart.MIMEMultipart([_subtype[,boundary]]):生成包括多个部分的邮件体  
email.mime.image.MIMEImage():创建包含音频数据的邮件体 

代码如下:

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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值