使用CMQ和SCF实现邮件发送
准备腾讯云 API 调用工具
python --version
yum install python-pip -y
安装腾讯云 API 命令行工具
pip install qcloudcli
qcloudcli configure
- Qcloud API SecretId:黏贴您的 SecretId
- Qcloud API SecretKey : 黏贴您的 SecretKey
- Region Id : gz
- Output Formate : 输入 json
qcloudcli cvm DescribeInstances
- 登录腾讯云控制台从云产品中选择
消息服务 CMQ
- 点击
主题订阅
选项卡,并切换地域为华南地区(广州)
- 点击
新建
按钮以新建队列,在弹出窗口中写入主题名sendEmailQueue
- 点击
创建
,完成队列创建。
使用 SCF 调用邮件服务
sendEmail
。 首先创建一个目录存放它:
mkdir -p /data/sendEmail 编写 sendEmail 函数
# -*- coding: utf8 -*-
import json
import smtplib
from email.mime.text import MIMEText
from email.header import Header# 第三方 SMTP 服务
mail_host="smtp.qq.com" #SMTP服务器
mail_user="3473058547@qq.com" #用户名
mail_pass="xxxxxxx" #口令
mail_port=465 #SMTP服务端口def sendEmail(fromAddr,toAddr,subject,content):sender = fromAddrreceivers = [toAddr] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱message = MIMEText(content, 'plain', 'utf-8')message['From'] = Header(fromAddr, 'utf-8')message['To'] = Header(toAddr, 'utf-8')message['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP_SSL(mail_host, mail_port) smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string())print("send success") except smtplib.SMTPException as e:print(e)print("Error: send fail") def main_handler(event, context):cmqMsg = Noneif event is not None and "Records" in event.keys():if len(event["Records"]) >= 1 and "CMQ" in event["Records"][0].keys():cmqMsgStr = event["Records"][0]["CMQ"]["msgBody"]cmqMsg = json.loads(cmqMsgStr)print cmqMsgsendEmail(cmqMsg['fromAddr'], cmqMsg['toAddr'], cmqMsg['title'], cmqMsg['body'])return "send email success"
参数 | 值 |
---|---|
mail_host | smtp.qq.com |
mail_user
|
自己的邮箱 |
mail_pass
|
SMTP 密码 |
mail_port
|
465 |
部署 sendEmail 函数
来创建并部署一个 SCF :
qcloudcli scf CreateFunction \ --functionName "sendEmail" \ --code "@$(cd /data/sendEmail && zip -r - * | base64)" \ --handler "sendEmail.main_handler" \ --description "sendEmail SCF"
Success
返回,使用
来查询自己账号下面有哪些 SCF:
qcloudcli scf ListFunctions运行 sendEmail 函数
sendEmail
的 SCF,进入函数代码功能页面,注意:
属性 | 值 |
---|---|
执行方法 | index.main_handler |
测试事件模板 | Hello World 事件模板 |
- 点击
测试
按钮测试该函数,注意在选择测试事件模板的时候Hello World 事件模板
的选择如上表所示。
{"Records": [{"CMQ": {"type": "topic","topicOwner":1253970226,"topicName": "sendEmailQueue","subscriptionName":"sendEmailFunction","publishTime": "2017-09-25T06:34:00.000Z","msgId": "123345346","requestId":"123345346","msgBody": "{\"fromAddr\":\"3473058547@qq.com\",\"toAddr\":\"3473058547@qq.com\",\"title\":\"hello from scf & cmq\",\"body\":\"email content to send\"}","msgTag": []}}]
}
字段 | 值 |
---|---|
fromAddr
|
发件方邮箱 |
toAddr | 收件方邮箱 |
title | 邮件标题 |
body | 邮件内容 |
- 点击
运行
按钮,观察运行结果。如果在结果中发现返回值和日志中均显示 "send email success",且设置的邮箱收到邮件则此程序运行正常
添加触发器
- 在刚刚创建的 sendEmail 函数详情页中,选择
触发方式
,点击添加触发方式
按钮. - 选择
CMQ主题订阅触发
,CMQ Topoic 选择 sendEmailQueue,点击保存
.
测试
- 前往 消息服务CMQ,在左侧栏选择
主题订阅
,从列表中找到创建好的队列 sendEmailQueue,点击此队列提供的操作 发送消息,并在弹出的窗口中输入如下消息:
{ "fromAddr":"xxx@qq.com", "toAddr":"xxx@qq.com", "title":"hello from scf & cmq", "body":"email content to send" }
字段 | 值 |
---|---|
fromAddr | 发件邮箱 |
toAddr | 收件邮箱 |
title | 邮件标题 |
body | 邮件内容 |
- 在无服务器云函数控制台中找到 sendEmail函数,选择
日志
选项查看函数被调用的日志记录。 - 登录进入您的收件邮箱,查询是否收到邮件,邮件内容是否正确。
转载于:https://www.cnblogs.com/pejsidney/p/8624381.html
使用CMQ和SCF实现邮件发送相关推荐
- 邮件发送类,支持HTML格式,支持优先级设置
www.chinacs.net 2002-5-9 中文C#技术站 邮件发送类,支持HTML格式,支持优先级设置.通过SOCKET类实现的 using System; using System.Te ...
- 使用Spring实现邮件发送
2019独角兽企业重金招聘Python工程师标准>>> 这两天写个小程序需要使用邮件发送的功能,在网上搜索了一帮子文章,感觉还是使用Spring的邮件发送功能比较方便,哈哈,懒人就这 ...
- python邮件发送哪个好_最全总结!聊聊 Python 发送邮件的几种方式
1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本.富文本.HTML 等格式的邮件 本文将聊聊利用 Python ...
- CentOS搭建msmtp+mutt实现邮件发送
1:搭建配置msmtp 下载msmtp包: 官方地址:http://msmtp.sourceforge.net/download.html 编译,安装(官方下载的包为tar.xz格式): #xz -d ...
- 利用phpmailer类邮件发送
<?phprequire("class.phpmailer.php"); //下载的文件必须放在该文件所在目录$mail = new PHPMailer(); //建立邮件发 ...
- python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...
本文实例讲述了Python实现的查询mysql数据库并通过邮件发送信息功能.分享给大家供大家参考,具体如下: 这里使用Python查询mysql数据库,并通过邮件发送宕机信息. Python代码如下: ...
- JavaMail邮件发送不成功的那些坑人情况及分析说明
前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有详细的中文注解.但是由于JavaMail的机制设置不够完善,特别是异常出错时的参考信息太少,给初学者造成了不少麻烦,而我就是 ...
- 邮件发送 --- 纯Java、JavaWeb、Spring三种实现方式
邮件发送学习笔记~ 一.邮件发送介绍 要在网络上实现邮件功能,必须要有专门的邮件服务器! 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中! ...
- 使用UTL_MAIL包实现存储过程邮件发送(转)
邮件通知预警和提示在当前系统中已经是一个比较常见的功能.各类型语言分别针对邮件提供了功能包和API接口方法,本篇介绍如何在PL/SQL代码中使用UTL_MAIL工具包发送邮件,同时还介绍配置中注意的细 ...
最新文章
- python中的构造函数和构造函数和析构函数的作用
- git工作区和缓存区概念理解
- php ci session获取值,CI3.1 Session类取不到值的问题
- ubuntu apache配置负载均衡篇(一)
- unity打包android 乱码,Unity3d发布IOS9应用时出现中文乱码的解决方法
- Linux基本命令解析(1)
- 【linux】知识点总结
- 给model模型传数组参数
- 转发技术风雨三十年,你经历过……
- autoconfig
- PHP 实现发送短信验证码(CI框架)
- java short相加_为什么两个short类型相加会自动提升为int?
- 移动硬盘坏点测试软件,移动硬盘坏道检测工具
- 爱学术,让论文写作不再难!
- ubuntu18.04下EnlightenGAN运行过程记录
- 云轴科技 ZStack 与和信创天完成兼容性认证,打造稳定安全的桌面云!
- wps横向计算机在哪里,Win7系统如何横向打印WPS文件
- PPT学习资源和实用技巧
- PMP考试时间推迟了,如何办理退缓考?
- 不知道天气咋样?一起用Python爬取天气数据分析告诉你