2016-10-20 5 views
0

私はPHPスクリプトを作成しましたが、基本的にポストリクエストからパラメータを受け取り、それに基づいて電子メールを送信します。私はもっ​​と簡単にpythonを使って電子メールを送ることができましたが、このプロジェクトが完了すると期待どおりに動作しません。問題はphpではなく、以前はC++で使用していたので、問題なく動作します。この問題はPythonを使用するときに発生します。私は何か間違ったことをしていることを知っています。私はそれが研究に基づいていることを知っていますが、私はそれを自分で修正する方法を見つけることができません。私はデータを持つ辞書を "requests.post"で使用する必要があることを理解していますが、私はどのように行ってこれを行うのかはよく分かりません。ここに試行されたコードがあります。要求モジュールを使用してパラメータを持つPythonのポストリクエストを使用します

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=="": 
関連する問題