2016-11-12 43 views
1

我有一個PHP腳本來從我的WordPress的網站數據庫中獲取用戶的電子郵件地址。 PHP腳本如下如何用python給多個接收者發郵件?

$sql = "SELECT user_email FROM wp_users"; 
$addr = mysqli_query($conn,$sql); 

while ($row = mysqli_fetch_assoc($addr)){ 
     printf ("%s\n", $row["user_email"]); 
} 

輸出將看起來像這樣

[email protected]

[email protected]

在我的Python代碼我使用urllib2閱讀PHP和Python的片段看起來像這樣

response = urllib2.urlopen('http://192.168.0.168/useremail.php') 
status = response.read() 

fromaddr = "[email protected]" 
toaddr = status 
server.sendmail(fromaddr, toaddr) 

在這種情況下,儘管從php腳本中檢索到多個電子郵件地址,但電子郵件始終只發送到第一個電子郵件地址。 請幫我解決這個問題。 不好意思說我是編程初學者。

+2

爲什麼在這裏混合使用python和PHP?使用其中一個或另一個 – e4c5

+0

@ e4c5我有一個腳本在Python中運行,當事件觸發時,它發送電子郵件通知客戶端。 –

回答

1

sendmail()需要郵件地址列表。因此,您需要使用urllib2的響應來構建該列表。

使用splitlines()返回字符串中行的列表。

即:

import urllib2 

response = urllib2.urlopen('http://192.168.0.168/useremail.php') 
status = response.read() 

mail_list = status.splitlines() # split the response in a list 

print mail_list 
# ['[email protected]', '[email protected]', '[email protected]', '[email protected]'] 

# then send the mails  
fromaddr = "[email protected]" 
server.sendmail(fromaddr, mail_list) 

希望它能幫助。

+0

嗨,我得到這個錯誤'AttributeError:'列表'對象沒有屬性'lstrip'.'我發現我的mail_list是這樣的,'['[email protected]','[email protected]',' ']'。由於我的php printf中有換行符,因此有空的報價。你對這個錯誤有什麼想法嗎? –

+0

嗨,我找出了什麼問題,因爲我將'email.MTMEText'導入到腳本中,它設置了「To:」標題。它必須是單個字符串。在那一部分,我必須像'msg ['To'] =','。join(mail_list)'一樣編碼。'所以你的'splitlines()'方法像一個魅力 –

+0

謝謝,祝你好運。 – JazZ

相關問題