2016-05-23 43 views
2

我有一個帖子函數,用於在數據庫中插入關於該進程的信息並將電子郵件發送給一個收件人。PHPMailer在slimframework上發送兩封電子郵件

$app->post('/sendemail', function ($request, $response) { 
    //Save info process 
    $message = saveDataBaseInfo(); 

    if ($message == "OK") {   

     // Send email 
     $res = sendEmail("Some text", "<p>Some text</p>", "Some subject", "[email protected]"); 

     if ($res == "Fail") { 
      return $res; 
     } 
    }  
}); 

public function sendEmail($body, $bodyHtml, $subject, $emailTo) { 

    $mail = new PHPMailer; 

    $mail->SingleTo = true; 
    $mail->isSMTP(); 
    $mail->Host = 'myHost'; 
    $mail->SMTPAuth = true; 
    $mail->Username = 'theuser'; 
    $mail->Password = '******'; 
    $mail->SMTPSecure = 'tls'; 
    $mail->Port = 587; 
    $mail->setFrom("[email protected]", "", false); 
    $mail->addAddress($emailTo); 
    $mail->isHTML(true); 

    $mail->Subject = $subject; 
    $mail->Body = $bodyHtml; 
    $mail->AltBody = $body; 
    $send = $mail->send(); 

    if (!$send) { 
     return "Success" 
    } else { 
     return "Fail"; 
    } 
} 

我調用這個函數在我的Android應用程序,如下面的代碼

// Click event function 
private void sendEmailClick() { 

    HashMap<String, String> parms = new HashMap<>(); 
    // parms like emailTo for example 

    TaskServerAsync taskServerAsync = new TaskServerAsync(this, parms); 
    taskServerAsync.execute(R.string.urlSendEmail); 
} 

public class TaskServerAsync extends AsyncTask<Integer, String, JSONObject> implements Response.ErrorListener { 
    private Map<String, String> parm; 
    private Context context; 

    public TaskServerAsync(Context context ,Map<String, String> parms) { 
     this.parm = parm; 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     //Show progressBar 
     progressBar.show(); 
    } 

    @Override 
    protected JSONObject doInBackground(Integer... values) { 
     RequestFuture<JSONObject> future = RequestFuture.newFuture(); 

     // Class send request server with volley 
     ServerConn.send(context, values[0], parms, future, this); 

     JSONObject json = null; 
     try { 
      // Get future response 
      json = future.get(10, TimeUnit.SECONDS); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (ExecutionException e) { 
      e.printStackTrace(); 
     } catch (TimeoutException e) { 
      e.printStackTrace(); 
     } 

     return json; 

    } 

    @Override 
    protected void onProgressUpdate(String... values) { 

    } 

    @Override 
    protected void onPostExecute(JSONObject response) {   
     dismissProgressBar(); 
    } 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     // Show error server and dismiss ProgressBar 
     dismissProgressBar(); 
    } 

    private void dismissProgressBar() { 
     if (progressBar != null) 
      progressBar.dismiss(); 
    } 
} 

但後期功能觸發了兩次。怎麼了?我需要在apache上配置一些東西嗎?有人可以幫助我嗎?

+0

你是怎麼調用這個函數的?例如,你使用AJAX發佈? – Mikey

+0

我有一個android應用程序,我打電話給這個函數與排球API – Vimaciel

+0

這使得你的問題更復雜,然後。您應該使用您發佈的Java代碼更新您的問題。這可能是Java代碼的問題。沒有使用你的Android應用程序,如果你嘗試併發布到這條路線,它是否也發送兩次? – Mikey

回答

0

由於noted,問題是Android應用程序發送兩次調用API。

相關問題