Я пытаюсь создать веб-сайт, который позволяет пользователям отправлять список контактов по электронной почте php «mail». «Форма действия», похоже, активируется, однако, когда я проверяю почту, она не отображается, и у меня есть папки для проверки спама.Моя функция PHP Mail не работает
Вот HTML код:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Case</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>TTP Banking Portal</h2>
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#home">Home</a></li>
<li><a data-toggle="tab" href="#withdraw">Withdraw</a></li>
<li><a data-toggle="tab" href="#menu2">Menu 2</a></li>
<li><a data-toggle="tab" href="#menu3">Menu 3</a></li>
<li><a data-toggle="tab" href="#email">Email</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>My Account</h3>
<p>Welcome back, Tyler B. Grim</p>
<h2>Account Details:</h2>
<h3>
<h2>Do you want to:</h2>
<a data-toggle = "tab" href = "#withdraw">Withdraw</a>
</div>
<div id="withdraw" class="tab-pane fade">
<h3>Menu 1</h3>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<div id="menu2" class="tab-pane fade">
<h3>Menu 2</h3>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.</p>
</div>
<div id="menu3" class="tab-pane fade">
<h3>Menu 3</h3>
<p>Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p>
</div>
<div id="email" class="tab-pane fade">
<form action = "../bin/portal.php?func_name=sendMail" method = "get">
<p>Send Mail to:</p>
<input type = "radio" name = "mailto" value = "[email protected]">[email protected]<br/>
<input type = "radio" name = "mailto" value = "[email protected]">[email protected]<br/>
<input type = "radio" name = "mailto" value = "[email protected]">[email protected]<br/>
<p>Subject:</p>
<input type = "text" name = "subject" placeholder = "Enter email subject:" />
<p>Message Body</p>
<input type = "text" name = "message" placeholder = "Enter email body here:" style="height:250px;width:1000px">
<p>Signature</p>
<input type = "text" name = "name" placeholder = "Enter name here"/>
<br/>
<br/>
<input type = "submit">Send Mail</input>
</div>
</div>
</body>
</html>
А вот мой PHP код функции:
<?php
function sendMail() {
if (isset($_GET["mailto"])) {
$to = $_GET["mailto"];
}
else {
echo "<script type = 'text/javascript'>alert('No message recipient selected')</script>";
}
$message = $_GET["message"];
$subject = $_GET["subject"];
$name = $_GET["name"];
if ($to) {
$sendTo = $to;
$sendSubject = $name . " " . $subject;
$sendMessage = $message;
if (mail($sendTo, $sendSubject, $sendMessage)) {
echo "<script type = 'text/javascript'>alert('Message Sent')</script>";
}
else {
echo "<script type = 'text/javascript'>alert('Your Computer Doesn't support PHP Mail Functionality.')</script>";
}
}
else {
echo "<script type = 'text/javascript'>alert('You need to enter a recipient before you can send an email')</script>";
}
}
Пожалуйста, обратите внимание, я попытался с помощью "POST" вместо "GET", и что не исправить проблему.
Update Я сделал изменения, чтобы использовать PHPMailer на основе предложений замечаний: Вот пересмотренный код, однако я до сих пор не получаю по электронной почте:
<?php
function sendMail() {
date_default_timezone_set('Etc/UTC');
require '..//bin//PHPMaster-mailer//PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "****************";
//Password to use for SMTP authentication
$mail->Password = "****************";
//Set who the message is to be sent from
$mail->setFrom($_GET["email"], $_GET["name"]);
//Set an alternative reply-to address
$mail->addReplyTo($_GET["email"], $_GET["name"]);
//Set who the message is to be sent to
$mail->addAddress($_GET["to"], $_GET["to"]);
//Set the subject line
$mail->Subject = $_GET["subject"];
$mail->AltBody = $_GET["message"];
//Attach an image file
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}
Я бегу
Windows 7, сервер XAMPP и веб-сайт работают на локальном хосте.
Я думаю, что теперь возможно, что localhost все еще смотрит на старый PHP-код. Вот ссылка, отправленная в мой браузер (localhost), когда я отправлю форму.
Какое предупреждение вы обнаружите? – RiggsFolly
В какой ОС вы выполняете это, помните, что Windows не поставляется с почтовым сервером, а функция 'mail()' PHP передает почту на почтовый сервер, на самом деле он не отправляет собственно почту – RiggsFolly
Я удалил тег phpMailer, поскольку вы не используя 'phpMailer', но, возможно, вам должно быть – RiggsFolly