2017-08-16 4 views
0

私は電子メールを送信するコードを持っていますが、ページをリフレッシュするたびに常に送信するのを防ぐ方法を教えてください。 Submitボタンをクリックしてもメールの送信が開始されるようにしましたが、役に立たなかったので、if (isset($_POST["submit"])) {}を使ってみました。PHPMailは、ページが更新されたときに常に送信します

function two_dim_array_to_html_table($arr, $colcomments){ 
    $ret = "<table border='1' width='auto' cellpadding='1px' cellspacing='0px' align='center'>\n"; 
$ret .= "\t<tr>\n"; 
    foreach($arr[0] as $key => $val){ 
     $ret .= "\t\t<th>".$colcomments[$key]."</th>\n"; 
     } 
    $ret .= "\t</tr>\n"; 
    foreach($arr as $row){ 
     $ret .= "\t<tr>\n"; 
     foreach($row as $column){ 
      $ret .= "\t\t<td>".$column."</td>\n"; 
      } 
     $ret .= "\t</tr>\n"; 
     } 
    $ret .= "<table>\n"; 
    return $ret; 
    } 
    if($result) { 
     $Body = "<html>\n" 
      . "<head>\n" 
. "</head>\n" 
      . "<body>\n" 
. two_dim_array_to_html_table($result, $colcomments) 
      . "</body>\n" 
. "</html>\n"; 
//Setting up Mail 
     $mail = new PHPMailer(); 
     if (EMAIL_USE_SMTP) { 
      // Set mailer to use SMTP 
      $mail->IsSMTP(); 
      //useful for debugging, shows full SMTP errors 
      //$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
      // Enable SMTP authentication 
      $mail->SMTPAuth = EMAIL_SMTP_AUTH; 
      // Enable encryption, usually SSL/TLS 
      if (defined(EMAIL_SMTP_ENCRYPTION)) { 
       $mail->SMTPSecure = EMAIL_SMTP_ENCRYPTION; 
      } 
      // Specify host server 
      $mail->Host = EMAIL_SMTP_HOST; 
      $mail->Username = EMAIL_SMTP_USERNAME; 
      $mail->Password = EMAIL_SMTP_PASSWORD; 
      $mail->Port = EMAIL_SMTP_PORT; 
     } else { 
      $mail->IsMail(); 
     } 
     $mail->From = EMAIL_FROM_ADDRESS; 
     $mail->FromName = EMAIL_FROM_NAME; 
     $mail->AddAddress('[email protected]'); 
     $mail->Subject = 'Daily Tasks - "'.date('d-m-Y h:m:s').'"'; 
     $mail->WordWrap = 100; 
     $mail->IsHTML(true); 
     $mail->Body = $Body; 
     $mail->Send(); 
    } 

あなたが機能であなたの「メール」のコードを入れて、フォームが送信された関数を呼び出すことができ、

if(!$mail->Send()) { 
header("Location: http://www.example.com"); 
exit; 
} 

答えて

-1

を私はこれを使用してみましたが、動作するようには思えません。この方法では、あなたのフォームを送信するときにのみメールが送信されることを確信しています。

0

私は、

if(isset($_POST['sendmail'])){ 
//EMAIL function 
if($mail) { 
    echo 'Mail successfully sent'; 

} else { 

    echo 'Mail failed to send'; 
} 
} 
だけセンドメールと使用するための別のボタンを追加することによってこの問題を解決することができました
関連する問題