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上配置一些東西嗎?有人可以幫助我嗎?
你是怎麼調用這個函數的?例如,你使用AJAX發佈? – Mikey
我有一個android應用程序,我打電話給這個函數與排球API – Vimaciel
這使得你的問題更復雜,然後。您應該使用您發佈的Java代碼更新您的問題。這可能是Java代碼的問題。沒有使用你的Android應用程序,如果你嘗試併發布到這條路線,它是否也發送兩次? – Mikey