我无法使用PHPMailer
用PHP发送电子邮件,也不知道我的代码的哪一部分是错误的。我的代码如下:
<?php
$msg = "";
if (isset($_POST['submit'])) {
require 'vendor/autoload.php';
function sendemail($to, $from, $fromName, $body) {
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->setFrom($from, $fromName);
$mail->addAddress($to);
$mail->Subject = 'Feedback';
$mail->Body = $body;
$mail->isHTML(false);
return $mail->send();
}
$name = $_POST['name'];
$email = $_POST['email'];
$body = $_POST['body'];
if (sendemail('draysondw@gmail.com', $email, $name, $body)) {
$msg = 'Email sent!';
}
else {
$msg = 'Email Failed!';
}
} ?>
<html>
<head>
<meta charset="utf-8">
<title>Feedback Form</title>
</head>
<body>
<form method="post" action="index.php">
Name: <input type="text" name="name" required><br>
Email: <input type="text" name="email" required><br>
Message: <textarea name="body"></textarea><br>
<input type="submit" name="submit" value="Send Feedback">
</form>
<br>
<?php echo $msg; ?>
</body>
</html>
能否请您帮我弄清楚我在改正发送电子邮件时做错了什么?
答案 0 :(得分:0)
不要这样做:
$mail->setFrom($from, $fromName);
这是伪造的,将导致邮件发送失败,拒绝或垃圾邮件过滤。改为这样做:
$mail->setFrom($to);
$mail->addReplyTo($from, $fromName);
这样,您就不会伪造发件人地址,但答复仍将提交给提交者。
我还建议您阅读the troubleshooting guide,该书专门讨论了此问题以及许多其他问题。