c++调用python发送邮件
2016-08-15 11:11
405 查看
python代码
注:调用时首先配置好环境。如果python是 x64 那么在c++调试器中也要使用64位的
配置环境见:http://blog.csdn.net/hlw0522/article/details/51869152
import smtplib from email.mime.text import MIMEText from email.header import Header def SendEmail(addr,content): # 第三方 SMTP 服务 mail_host="smtp.sina.com" #设置服务器 mail_user="hanliangwei123@sina.com" #用户名 mail_pass="*******" #密码 sender = 'hanliangwei123@sina.com' receivers = [str(addr)] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 message = MIMEText(content, 'plain', 'utf-8') subject = 'Mr.HLW 邮件' message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print ("邮件发送成功") except smtplib.SMTPException: print ("Error: 无法发送邮件")c++代码
#include <Python.h> #include<iostream> using namespace std; int SendEmail(char addr[], char content[]) { Py_Initialize(); if (!Py_IsInitialized())//检测是否已初始化,成功返回0 { cout << "初始化失败!!" << endl; system("pause"); return -1; } //PyRun_SimpleString实际上是一个宏,执行一段Python代码。 PyObject *pModule, *pDict, *pFunc, *pArgs; pModule = PyImport_ImportModule("Email"); if (!pModule) { cout << "找不到Email.py,或打开失败!" << endl; system("pause"); return -1; } pDict = PyModule_GetDict(pModule);//相当于Python模块对象的__dict__属性,得到模块名称空间下的字典对象。 if (!pDict) { return -1; } pFunc = PyDict_GetItemString(pDict, "SendEmail"); if (!pFunc || !PyCallable_Check(pFunc)) { cout << "找不到SendEmail函数" << endl; system("pause"); return -1; } pArgs = PyTuple_New(2);//参数为元组长度,也就是参数个数 /*int PyTuple_SetItem( PyObject *p, Py_ssize_t pos, PyObject *o) 其参数含义如下所示。 p:所进行操作的元组。 pos:所添加项的位置索引。 o:所添加的项值。*/ //Py_BuildValue把C++的变量转换成一个Python对象。当需要从C++传递变量到Python时,就会使用这个函数 PyTuple_SetItem(pArgs, 0, Py_BuildValue("s", addr));//i相当于c里面的%d PyTuple_SetItem(pArgs, 1, Py_BuildValue("s", content)); // 调用Python函数 PyObject_CallObject(pFunc, pArgs); Py_Finalize();//清理工作 // Py_DECREF(pModule); // Py_DECREF(pDict); // Py_DECREF(pFunc); // Py_DECREF(pArgs); } int main(int argc, char** argv) { SendEmail("835126606@qq.com", "Test Email!"); system("pause"); return 0; }
注:调用时首先配置好环境。如果python是 x64 那么在c++调试器中也要使用64位的
配置环境见:http://blog.csdn.net/hlw0522/article/details/51869152
相关文章推荐
- linux下python 发送邮件,并通过C++调用
- c++调用mapi发送邮件的方法
- python调用smtplib模块发送邮件
- python写的调用ms sqlserver数据并发送邮件的小程序
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- VS2008环境下C++调用Python模块函数----一封邮件引发的关机
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- python 调用smtp服务器发送邮件实例
- PHP调用Python快速发送高并发邮件
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- Python调用C++动态链接库发送protobuf格式数据
- Python 和curl 调用sendcloud发送邮件
- PHP调用Python快速发送高并发邮件
- python调用sendmail发送邮件
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送