我想使用Gmail创建一个电子邮件表单,但无法使其正常运行。 我下载了PHPmailer并上传了它们。 该表单有效,它还会检查电子邮件地址是否正确,但在点击提交按钮后没有显示消息,也不会发送电子邮件。
我还在我的Gmail设置中打开了安全性较低的应用程序的访问权限。
<?php
// functie spamcheck
function spamcheck($field)
{
//filter_var() sanitizes de email
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() valideert de email
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return true;
}
else
{
return false;
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// PHP mailer settings instellen voor GMAIL
require_once ('contactform/phpmailer/class.phpmailer.php'); // het pad vanaf dit fomulier naar "class.phpmailer.php"
$mail = new PHPMailer(true);
$mail->CharSet = 'utf-8'; //character set utf-8
$mail->IsSMTP(); // smtp protocol gebruiken voor de email te verzenden
$mail->Host = "smtp.gmail.com"; // smtp servernaam van gmail
$mail->Port = "587"; // smtp poort voor gmail 465 or 587
$mail->SMTPSecure = "tls"; //gmail authenticeert door ssl ( andere optie is tls )
$mail->SMTPAuth = true;
// account gegevens voor authenticatie Gmailserver
$mail->Username = "ethannn@gmail.com";
$mail->Password = "mypassword";
$mail->From = $_POST['email'];
$mail->FromName = $_POST['naam'];
$mail->AddAddress("ethannn@email.com", "Jouw Naam"); // emailadres ontvanger en de naam die in email verschijnt
$mail->Subject = "Contactformulier";
// variabelen voor de body en body email opmaken
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
// body opmaken
$body = "";
$body .= "Naam: ";
$body .= $naam;
$body .= "<br />";
$body .= "Achternaam: ";
$body .= $achternaam;
$body .= "<br />";
$body .= "Email: ";
$body .= $email;
$body .= "<br />";
$body .= "Bericht: ";
$body .= $bericht;
$body .= "<br />";
$mail->WordWrap = 80;
$mail->MsgHTML($body, dirname(__FILE__), true); // genereren van bodybericht
// check of submitter een robot is en of er geldige input is geleverd
$mailcheck = spamcheck($_POST['email']);
if($_POST['robot'] != "test_spambot") {
die();
}
//check of email geldig is
elseif ($mailcheck == false) {
echo "Ongeldige input van emailadres";
}
else {
// email verzenden
$formsent = $mail->Send();
// echo's als verzenden goed of fout is gegaan
if ($formsent){
echo 'Uw bericht is successvol verstuurd!';
}
else{
echo 'Sorry, maar er is iets misgegaan met het versturen van het formulier; probeer het later nog eens.';
}
}
} // eind request method
?>
<form action="" method="post" name="" id="">
<input type="hidden" name="robot" value="test_spambot" /><br />
Naam: <br />
<input type="text" name="naam" value ="ethannn"/><br />
Achternaam: <br />
<input type="text" name="achternaam" value ="Kikker"/><br />
Email: <br />
<input type="text" name="email" value ="kikker@gmail.com"/><br />
Bericht: <br />
<textarea name="bericht" />blablabla</textarea>
<br /><br />
<input type="reset" value="Reset" />
<input type="submit" value="Verzenden" />
</form>
答案 0 :(得分:1)
您应该从这里下载PHPMailer - https://github.com/PHPMailer/PHPMailer
示例文件夹中有一个名为 gmail.phps 的gmail工作用例。
您应该根据示例脚本更改脚本。
在这些更改之后,如果您的凭据正确,您应该能够成功发送消息..
这是完整版
<?php
// functie spamcheck
function spamcheck($field)
{
//filter_var() sanitizes de email
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() valideert de email
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return true;
}
else
{
return false;
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// PHP mailer settings instellen voor GMAIL
require_once ('PHPMailerAutoload.php'); // het pad vanaf dit fomulier naar "class.phpmailer.php"
$mail = new PHPMailer();
$mail->CharSet = 'utf-8'; //character set utf-8
$mail->IsSMTP(); // smtp protocol gebruiken voor de email te verzenden
$mail->Host = "smtp.gmail.com"; // smtp servernaam van gmail
$mail->Port = 587; // smtp poort voor gmail 465 or 587
$mail->SMTPSecure = "tls"; //gmail authenticeert door ssl ( andere optie is tls
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
// account gegevens voor authenticatie Gmailserver
$mail->Username = "ethannn@gmail.com";
$mail->Password = "mypassword";
$mail->From = $_POST['email'];
$mail->FromName = $_POST['naam'];
$mail->AddAddress("ethannn@email.com", "Jouw Naam"); // emailadres ontvanger en de naam die in email verschijnt
$mail->Subject = "Contactformulier";
// variabelen voor de body en body email opmaken
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
// body opmaken
$body = "";
$body .= "Naam: ";
$body .= $naam;
$body .= "<br />";
$body .= "Achternaam: ";
$body .= $achternaam;
$body .= "<br />";
$body .= "Email: ";
$body .= $email;
$body .= "<br />";
$body .= "Bericht: ";
$body .= $bericht;
$body .= "<br />";
$mail->WordWrap = 80;
$mail->MsgHTML($body, dirname(__FILE__), true); // genereren van bodybericht
// check of submitter een robot is en of er geldige input is geleverd
$mailcheck = spamcheck($_POST['email']);
if($_POST['robot'] != "test_spambot") {
die();
}
//check of email geldig is
elseif ($mailcheck == false) {
echo "Ongeldige input van emailadres";
}
else {
// email verzenden
$formsent = $mail->send();
// echo's als verzenden goed of fout is gegaan
if ($formsent){
echo 'Uw bericht is successvol verstuurd!';
}
else{
echo 'Sorry, maar er is iets misgegaan met het versturen van het formulier; probeer het later nog eens.';
}
}
} // eind request method
?>
<form action="" method="post" name="" id="">
<input type="hidden" name="robot" value="test_spambot" /><br />
Naam: <br />
<input type="text" name="naam" value ="ethannn"/><br />
Achternaam: <br />
<input type="text" name="achternaam" value ="Kikker"/><br />
Email: <br />
<input type="text" name="email" value ="kikker@gmail.com"/><br />
Bericht: <br />
<textarea name="bericht" />blablabla</textarea>
<br /><br />
<input type="reset" value="Reset" />
<input type="submit" value="Verzenden" />
</form>
不要忘记添加PHPMailerAutoload.php,class.smtp.php和class.phpmailer.php从Github repo我发布到你的脚本所在的目录