Python实现电子邮件与短信发送功能详解
本文介绍如何使用Python进行网络应用开发,重点讲解通过smtplib模块发送普通及带附件邮件的方法,以及调用第三方短信平台API发送验证码和营销信息的实现。包含完整代码示例与参数配置说明,适用于Web后端自动化任务处理。
Python发送电子邮件的实现
发送电子邮件
在即时通信软件高度普及的当下,电子邮件依然是互联网上应用最为广泛的工具之一。无论是公司向求职者发送录用通知、网站向用户发送账号激活链接,还是银行向客户推广理财产品,这些任务大多由程序自动通过电子邮件完成。
正如使用HTTP(超文本传输协议)访问网站一样,发送邮件需遵循SMTP(简单邮件传输协议)。SMTP是基于TCP(传输控制协议)提供的可靠数据传输服务之上的应用级协议,它详细规定了邮件发送者与服务器之间的通信细节。Python中的smtplib模块将这些复杂的操作封装为几个简单的函数,极大简化了开发流程。
以下代码演示了如何使用Python发送普通电子邮件。
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
def main():
# 请自行修改下面的邮件发送者和接收者
sender = 'abcdefg@126.com'
receivers = ['uvwxyz@qq.com', 'uvwxyz@126.com']
message = MIMEText('用Python发送邮件的示例代码.', 'plain', 'utf-8')
message['From'] = Header('王大锤', 'utf-8')
message['To'] = Header('骆昊', 'utf-8')
message['Subject'] = Header('示例代码实验邮件', 'utf-8')
smtper = SMTP('smtp.126.com')
# 请自行修改下面的登录口令
smtper.login(sender, 'secretpass')
smtper.sendmail(sender, receivers, message.as_string())
print('邮件发送完成!')
if __name__ == '__main__':
main()
若需发送包含附件的邮件,可参照下述方式进行操作。
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
import urllib
def main():
# 创建一个带附件的邮件消息对象
message = MIMEMultipart()
# 创建文本内容
text_content = MIMEText('附件中有本月数据请查收', 'plain', 'utf-8')
message['Subject'] = Header('本月数据', 'utf-8')
# 将文本内容添加到邮件消息对象中
message.attach(text_content)
# 读取文件并将文件作为附件添加到邮件消息对象中
with open('/Users/Hao/Desktop/hello.txt', 'rb') as f:
txt = MIMEText(f.read(), 'base64', 'utf-8')
txt['Content-Type'] = 'text/plain'
txt['Content-Disposition'] = 'attachment; filename=hello.txt'
message.attach(txt)
# 读取文件并将文件作为附件添加到邮件消息对象中
with open('/Users/Hao/Desktop/汇总数据.xlsx', 'rb') as f:
xls = MIMEText(f.read(), 'base64', 'utf-8')
xls['Content-Type'] = 'application/vnd.ms-excel'
xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx'
message.attach(xls)
# 创建SMTP对象
smtper = SMTP('smtp.126.com')
# 开启安全连接
# smtper.starttls()
sender = 'abcdefg@126.com'
receivers = ['uvwxyz@qq.com']
# 登录到SMTP服务器
# 请注意此处不是使用密码而是邮件客户端授权码进行登录
# 对此有疑问的读者可以联系自己使用的邮件服务器客服
smtper.login(sender, 'secretpass')
# 发送邮件
smtper.sendmail(sender, receivers, message.as_string())
# 与邮件服务器断开连接
smtper.quit()
print('发送完成!')
if __name__ == '__main__':
main()
Python调用API发送短信
发送短信
发送短信同样是项目开发中的常见需求,网站的注册码、验证码及营销信息通常通过短信发送给目标用户。在下面的代码示例中,我们调用了互亿无线短信平台提供的API接口来实现短信发送功能。该平台为注册用户提供了50条免费短信额度,并提供了常用开发语言的发送示例(demo)。开发者可登录该网站,在用户自服务页面中配置短信参数。国内提供短信服务的平台众多,读者可根据实际需求进行选择,通常需考量费用预算、短信到达率以及使用的难易程度等指标。若需在商业项目中正式使用短信服务,建议购买短信平台提供的套餐服务。
import urllib.parse
import http.client
import json
def main():
host = "106.ihuyi.com"
sms_send_uri = "/webservice/sms.php?method=Submit"
# 下面的参数需要填入自己注册的账号和对应的密码
params = urllib.parse.urlencode({'account': '你自己的账号', 'password' : '你自己的密码', 'content': '您的验证码是:147258。请不要把验证码泄露给其他人。', 'mobile': '接收者的手机号', 'format':'json' })
print(params)
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)
response = conn.getresponse()
response_str = response.read()
jsonstr = response_str.decode('utf-8')
print(json.loads(jsonstr))
conn.close()
if __name__ == '__main__':
main()
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













