2015-06-18 2 views
3

Я пытаюсь сделать php script отправлю email всякий раз, когда я делаю post request. Если я загружаю свой сайт в web browser, он действительно отправляет почту. Но всякий раз, когда я отправляю post request в Android (вызывая метод postData), ничего не происходит. Почему это не работает?Заявка на отправку Android в php

public void postData(JSONObject object){ 
    //not using json object yet since i'm just testing... 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://test.com/email"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<>(2); 
     nameValuePairs.add(new BasicNameValuePair("test1", "test1")); 
     nameValuePairs.add(new BasicNameValuePair("test2", "test2")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 

     // Execute HTTP Post Request 
     ResponseHandler<String> responseHandler=new BasicResponseHandler(); 
     String responseBody = httpclient.execute(httppost, responseHandler); 

     //Just display the response back 
     //displayToastMessage(responseBody); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 

Вот мое воображение PHP:

public function sendMail() 
{ 
    $test = $_POST["test1"] 
    $to = "[email protected]"; 
    $subject = "HTML email"; 

    $message = " 
     <html> 
     <head> 
     <title>HTML email</title> 
     </head> 
     <body> 
     <p>This email contains HTML Tags!</p> 
     <table> 
     <tr> 
     <th>Firstname</th> 
     <th>Lastname</th> 
     </tr> 
     <tr> 
     <td>$test</td> 
     <td>Doe</td> 
     </tr> 
     </table> 
     </body> 
     </html> 
    "; 

    // Always set content-type when sending HTML email 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

    // More headers 
    $headers .= 'From: <[email protected]>' . "\r\n"; 
    $headers .= 'Cc: [email protected]' . "\r\n"; 

    mail($to,$subject,$message,$headers); 
} 
+1

у вас возникла ошибка – Ramki

+1

вы не вызывали функцию sendMail – Ramki

+0

Я использую Laravel, функция sendMail объявляется на маршруте, всякий раз, когда URL-адрес загружен, он автоматически вызывает функцию – Markinson

ответ

1

Я думаю, что я нашел эту проблему, и думаю, Я тоже могу помочь другим. Я использовал Laravel для вызова функции, но, похоже, Ларавелю это не понравилось. Я загрузил инструмент Chrome под названием Postman и отправил запрос на отправку вручную, в котором была сделана ошибка, возможно, для предотвращения подделки подделок или какого-либо другого взлома. Теперь я просто сделал это разделенным файлом, и теперь он работает!

+1

Отлично! убедитесь, что вы принимаете свой собственный ответ, когда сможете. Чтобы другие могли найти ваше решение проще. – Knossos

+0

Я буду :) Я должен ждать два дня, это говорит ...:/спасибо за поддержку @Knossos! – Markinson

1

Попробуйте этот код в PHP

$test=$_REQUEST['test1']; 
+0

Спасибо! Я использую это сейчас, чувствую себя немного более безопасным, чем использование только GET – Markinson

1
public function sendMail($data) 
    { 
     $test = $data["test1"] 
     $to = "[email protected]"; 
     $subject = "HTML email"; 

     $message = " 
      <html> 
      <head> 
      <title>HTML email</title> 
      </head> 
      <body> 
      <p>This email contains HTML Tags!</p> 
      <table> 
      <tr> 
      <th>Firstname</th> 
      <th>Lastname</th> 
      </tr> 
      <tr> 
      <td>$test</td> 
      <td>Doe</td> 
      </tr> 
      </table> 
      </body> 
      </html> 
     "; 

// Always set content-type when sending HTML email 
     $headers = "MIME-Version: 1.0" . "\r\n"; 
     $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

// More headers 
     $headers .= 'From: <[email protected]>' . "\r\n"; 
     $headers .= 'Cc: [email protected]' . "\r\n"; 

     mail($to,$subject,$message,$headers); 

    } 
sendMail($_REQUEST); 

Проверить это один

Смежные вопросы