c 呼叫python傳送郵件

2021-07-16 16:39:33 字數 2088 閱讀 8907

python**

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="[email protected]" #使用者名稱

mail_pass="*******" #密碼

sender = '[email protected]'

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 #includeusing namespace std;

int sendemail(char addr, char content)

//pyrun_******string實際上是乙個巨集,執行一段python**。

pyobject *pmodule, *pdict, *pfunc, *pargs;

pmodule = pyimport_importmodule("email");

if (!pmodule)

pdict = pymodule_getdict(pmodule);//相當於python模組物件的__dict__屬性,得到模組命名空間下的字典物件。

if (!pdict)

pfunc = pydict_getitemstring(pdict, "sendemail");

if (!pfunc || !pycallable_check(pfunc))

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)

注:呼叫時首先配置好環境。如果python是 x64  那麼在c++偵錯程式中也要使用64位的

配置環境見:

Python 呼叫 Outlook 傳送郵件

import win32com.client as win32 defsend mail outlook win32.dispatch mail item outlook.createitem 0 0 olmailitem mail item.recipients.add someone qq.co...

C 呼叫outlook 傳送郵件

1.這個是呼叫ie mailto 來傳送的,呼叫win api 首先要新增引用using system.runtime.interopservices class mailto 與我聯絡開啟郵箱的類 2 呼叫 ie方法 system.diagnostics.process.start mailto ...

C 呼叫 Outlook傳送郵件例項

新增引用 microsoft.office.interop.outlook using system using system.collections.generic using system.linq using system.text using system.net.mail using sy...