PHPMail всегда отправляет при обновлении страницы

У меня есть код, который отправляет электронное письмо, но как я могу предотвратить его отправку каждый раз, когда обновляется моя страница. Я пытался использовать if (isset($_POST["submit"])) {} так что отправка почты будет запущена только когда Submit кнопка нажата, но это не помогло вообще.

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('test.test@domain.COM');
$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;
}

0

Решение

Я смог это исправить, просто добавив еще одну кнопку для отправки почты и использования,

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

} else {

echo 'Mail failed to send';
}
}
0

Другие решения

Вы можете поместить свой «почтовый» код в функцию и вызвать функцию после отправки формы. Таким образом, вы уверены, что письмо будет отправлено только тогда, когда вы отправите форму.

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector