2
私はデータベースに関するプロセスに関する情報を挿入して1人の受信者に電子メールを送信する投稿機能を持っています。PHPMailerはslimframeworkで2回電子メールを送信します
$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";
}
}
そして私は
// 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();
}
}
以下のコードのように私のAndroidアプリ上でこの関数を呼び出すしかし、ポスト機能は二回発射。どうしましたか?私はApacheで何かを設定する必要がありますか?誰かが私を助けることができますか?
この関数をどのように呼びますか?たとえば、AJAXを使用して投稿していますか? – Mikey
私はアンドロイドアプリを持っており、私はVolley Apiでこの機能を呼び出しています – Vimaciel
これはあなたの問題をより複雑にします。投稿に使用するJavaコードで質問を更新する必要があります。 Javaコードに問題がある可能性があります。あなたのAndroidアプリを使用しないで、このルートに投稿しようとすると、それも2回送信されますか? – Mikey