linux下python 发送邮件,并通过C++调用

python代码

# -*- coding: utf-8 -*-
import sys
import smtplib
import mimetypes
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

def AutoSendMail( fn ):
    msg = MIMEMultipart()
    msg['From'] = "XXXX.XXX.com"
    msg['To'] = "XXXX.XXX.com"
    msg['Subject'] = "Send Email Test"



    file1 = fn
    image = MIMEImage(open(file1,'rb').read())
    image.add_header('Content-ID','<image1>')
    msg.attach(image)


    server = smtplib.SMTP()
    server.connect('smtp.163.com')
    server.login('youremailaccount@XXX.com','your smtp passwd')
    server.sendmail(msg['From'],msg['To'],msg.as_string())
    server.quit()

if __name__ == "__main__":
    if (len( sys.argv ) < 2):
        print( "too fewer input arguments" )
    else:
        print(sys.argv[1]) 
        try:
            AutoSendMail( sys.argv[1] )
        except Exception,e:
            print( Exception, ": ", e, "!!!!" )

C++代码

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "cv.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

/** @function main */
int main( int argc, char** argv )
{

   string code("python ../email/sendPic.py ");
   string name = "../img/1.bmp";
   code = code + name;

   cout << "begin to send email!!" << endl;
   system( code.c_str() );
   cout << "end~~" << endl;


    //waitKey(0);
    return(0);
}

注:里面有些关于opencv的头文件可以去掉,同时,程序里合成的发送邮件的字符串,在自己点电脑上测试时,要注意文件路径并修改字符串

  • 第一个参数是python
  • 第二个参数是python文件所在的路径
  • 第三个参数是图片所在的路径

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
PROJECT (cppTest)
find_package(OpenCV REQUIRED)

ADD_EXECUTABLE(vizTest vizTest)
target_link_libraries(vizTest ${OpenCV_LIBS})

话说之前的乱七八糟的又点多,不知道有没有删错。。这个要是不行的话,从网上重新查找一个CMakeList.txt就行。

参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
因工作需要在Linux环境中用C++编写个发送邮件的程序,着实费了点周折,最终得以满意解决,现将历程与成果与大家分享! 一、刚开始网上一通逛搜,发现Linux环境下,发邮件使用较多的方法是libesmtp包,网上也有示例,按照相关章的指引,很容易就实现的邮件的发送,但问题是不知道如何实现SSL。 二、发现libesmtp文件中有个smtp_starttls_set_ctx接口,似乎是可以解决ssl问题的,逛搜libesmtp解决SSL发送邮件的解决办法,几乎无任何信息,后来下载了个libesmtp的源代码包libesmtp-1.0.6.tar.bz2,内含examples示例目录,可以直接编译成功,但似乎是只支持tls邮件发送,而不支持ssl邮件的发送,百思不得其解。 三、接着寻找别的解决办法,在CSDN搜到一个csmtp说可以解决SSL邮件发送问题的资源,但下载需要50积分,说心里话能解决问题50积分也是值得的,但没有呀,提供资源者还比较仁义,告知资来源于https://www.codeproject.com,于是乎在codeproject找到了csmtp的资源,有两个版本,v2.4版本包CSmtp_v2_4_ssl.zip,v1.8版本分为window(CSmtp_v1_8a.zip)和linux(CSmtp_v1_8b.zip)两个包。 四、为了能省点精力,就直接用版较低的linux版吧,解压后发现有makefile文件,可直接编译通过,一般的邮件能发送成功,但可惜的是v1.8版本也不支持ssl协议。 五、其实从包的名字上就能看出来v2.4版本开始支持 ssl协议,但v2.4并不分windows版本和linux版本,是否能支持linux呢,查看源代码发现有对linux的支持,只是包内没有makefile文件,似乎没有在linux目录下编译过,于是编写了个makefile文件尝试编译,竞然编通过,而且发送文件成功,经过测试可以支持ssl邮件的发送,因暂无需求tls未做测试。 六、现将程序重新打包成csmtp_v2.4_linux.tar文件,与大家分享,文中所提到的相关资源包都一并打包到资源中了。 最后感谢原创christopher w. backen提供的代码资源!
Linux系统中调用Python可以通过以下几种方法实现: 1. 命令行调用:在终端中输入python命令来启动Python解释器。例如,输入“python3”可以启动Python 3.x版本的解释器。命令行调用可以直接执行Python脚本文件或者进行交互式的Python代码编写和执行。 2. 编写Python脚本文件:使用任意文本编辑器编写Python脚本文件,以.py为后缀保存。然后,在终端中使用python命令加上脚本文件路径来执行该脚本文件。例如,输入“python3 myscript.py”可以执行名为“myscript.py”的Python脚本文件。 3. 使用脚本解释器声明:在Python脚本文件的第一行添加如下声明:#!/usr/bin/env python3。保存后,在终端中使用chmod命令给脚本文件增加执行权限,然后可以直接通过./脚本文件名来执行该脚本文件。 4. 整合到Shell脚本中:可以在Shell脚本中调用Python脚本文件,实现更复杂的任务。在Shell脚本中使用python命令加上脚本文件路径来执行Python脚本。 5. 利用IDE或编辑器:使用集成开发环境(IDE)或者文本编辑器,比如PyCharm、Sublime Text等,创建和编辑Python代码文件,并通过IDE或编辑器提供的运行选项来执行Python代码。这些工具通常提供代码自动完成、调试等功能,提高了编码效率和代码质量。 无论使用哪种方法,在Linux系统中调用Python都需要确保系统已正确安装Python解释器,并设置了正确的环境变量。只有这样,才能顺利调用Python并执行相关操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值