2016-10-20 238 views
0

我已經寫了一個php腳本巫婆實質上從post請求中獲取參數並基於此發送電子郵件。我可以更容易地使用python發送電子郵件,但如果完成,該項目將無法按預期工作。這個問題不是用php,因爲我之前用C++使用它,一切正常。使用python時會出現問題。我知道我做錯了什麼,而且我對基於研究的內容有了一個很好的想法,但我無法找到自己解決的方法。我知道我需要在「requests.post」中使用帶有data =的字典,但我不確定如何去做這件事。這是嘗試的代碼。在python中使用請求模塊的參數使用post請求

import requests 

w=raw_input("type the email address to witch the message will be received.") 
n=raw_input("name?") 
s=raw_input("subject?") 
m=raw_input("email message?") 
if w=="" or n=="" or f=="" or m=="": 
    print "Empty fields are not allowed. Now exiting." 
else: 
    r=requests.post("http://example.com/mailer.php?who=%s&name=%s&from=%s&sub=%s&mess=%s") % (w, n, f, s, m) 
+0

你可能需要5分鐘閱讀請求文檔。 – polku

+0

你的代碼中沒有聲明一個「f」變量...... – Cesar

回答

0

將您的數據放入URL主要用於GET請求。服務器可能會或可能不會在POST請求中注意到它。試試這個:

r = requests.post("http://example.com/mailer.php", data={ 
    'who': w, 'name': n, 'from': f, 'sub': s, 'mess': m}) 
print(r.status_code, r.reason) 
0

嘗試構建您的data dictionary如下:

payload = { 
    'who': w, 
    'name': n, 
    'from': f, 
    'sub': s, 
    'mess': m, 
} 

r = requests.post("http://example.com/mailer.php", data=payload) 

另外,還要注意:

if not all((w, n, f, m)): 

是一個更好的equivelent到:

if w=="" or n=="" or f=="" or m=="":