Кажется, у меня всегда возникают вопросы и беспорядок. Университет не учил нас никому о PHP, и я хочу использовать его для отправки электронной почты. Может ли кто-нибудь помочь? Я использую JavaScript для проверки, а затем PHP для отправки формы. Вот что у меня есть.
PHP:
<?php
$to = '[email protected]';
$subject = 'Voice4Autism Inquiry';
$FirstName = $_POST['fname'];
$LastName = $_POST['lname'];
$eMail = $_POST['email'];
$message = <<<EMAIL
Hi!<br /><br/>
My name is $FirstName $LastName. I am interseted in your newsletter from Voice4Autism. Please add $eMail to your listserve.<br /><br />
Thank you,<br />
$FirstName $LastName
EMAIL;
$header = "From: $eMail\r\n";
$header = "Content-type: text/html\r\n";
mail($to, $subject, $message, $header);
?>
HTML/JavaScript
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<script>
function checkforblank() {
var errormessage = "";
if (document.getElementById('fname').value ==""){
errormessage += "enter your first name \n";
}
if (document.getElementById('lname').value ==""){
errormessage += "enter your last name \n";
}
if (document.getElementById('email').value ==""){
errormessage += "enter your email \n";
}
if (document.getElementById('confirmEmail').value ==""){
errormessage += "confirm your email \n";
}
if (errormessage != ""){
alert(errormessage);
return false;
} else return true;
}
function verifyEmail() {
var status = false;
var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
if (document.myForm.email.value.search(emailRegEx) == -1) {
alert("Please enter a valid email address.");
}
if (document.getElementById('email').value == document.getElementById('confirmEmail').value) {
alert("Thank you for your interest!");
status = true;
} else {
alert("Email addresses do not match. Please retype them to make sure they are the same.");
}
return status;
}
function confirmEmailAddresses(){
if (checkforblank() == true) {
if (verifyEmail() == true) {
document.getElementById("myForm").submit();
}
}
}
</script>
</head>
<body>
<div id="content">
<form name="myForm" action="#" method="get" enctype="application/x-www-form-urlencoded" onsubmit="">
<table width="377" height="96">
<tr>
<td style="text-align: right">First Name:</td>
<td><label for="FirstName"></label>
<input type="text" name="fname" id="fname"></td>
</tr>
<tr>
<td style="text-align: right">Last Name:</td>
<td><label for="LastName"></label>
<input type="text" name="lname" id="lname"></td>
</tr>
<tr>
<td style="text-align: right">E-mail:</td>
<td><input type="email" name="email" id="email"></td>
</tr>
<tr>
<td style="text-align: right">Confirm E-mail:</td>
<td><input type="email" name="confirmEmail" id="confirmEmail"></td>
</tr>
</table>
<input type="button" value="Send" onClick="confirmEmailAddresses()"><input type="reset" value="Reset Form">
</form>
</div>
</body>
</html>
JavaScript и HTML работают !!!
AJAX абсолютно не нужен здесь, если вы не хотите, чтобы страница сохранялась. Просто установите вид action
в файл, который будет получать данные формы и отправить его по почте.
<form name="myForm" action="mailer.php" method="post" enctype="application/x-www-form-urlencoded" onsubmit="">
Установите метод формы в POST. Это лучше. Теперь в вашем mailer.php
(вы можете это назвать, просто убедитесь, что используете правильное имя для действия) файл обрабатывает массив $_POST
для получения данных формы. Обратите внимание, что страница обновится, вы можете использовать перенаправление на страницу с благодарностью после отправки формы.
Измените эту кнопку:
<input type="submit" name="send_mail" value="Send" onClick="confirmEmailAddresses()">
Ваш PHP файл может быть примерно таким:
<?php
if(isset($_POST) && !empty($_POST)){
if(isset($_POST['send_mail']) && $_POST['send_mail'] == 'Send'){
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$confirm_email = $_POST['confirmEmail'];
//Additional validation here
//Use the mail function to send the email
//If mail sent, redirect to a thank you/confirmation page
}
}
?>
Проверьте документацию по mail
для рабочих примеров.
по почте вы можете проверить здесь
mail($to,$subject,$message,$header);
$ to to to to the e-mail email должно быть отправлено
$ subject - просто краткое описание почты
$ message - ваше сообщение
$ header - тип содержимого заголовка, такой как MIME
Я не уверен, что весь ваш код работает. Но одна вещь, которую я замечаю, - это указать целевой URL-адрес (php файл в этом случае) в атрибуте action = "", который сообщает браузеру, куда отправлять полученные данные для обработки.
<form name="myForm" action="#" method="get" enctype="application/x-www-form-urlencoded" onsubmit="">
в
<form name="myForm" action="your_php_program.php" method="get" enctype="application/x-www-form-urlencoded" onsubmit="">
Я бы использовал AJAX. Но сначала убедитесь, что ваш веб-сервер поддерживает рассылку с помощью PHP. Вы можете проверить это с помощью phpinfo() Но похоже, что ваш PHP скрипт не отправляет почту() вообще...