我只是在提交表单时尝试运行PHPMailer。我尝试了几种不同的方法但没有成功。
我也不确定此代码的哪一部分实际发送了电子邮件。当我使用
进行测试时if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
它有效,所以我知道它运行正常。有什么想法为什么这段代码不起作用?
<?php
require_once 'C:\wamp\www\phpmailer\PHPMailer-master\PHPMailerAutoload.php';
$mail = new PHPMailer;
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com '; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'test@gmail.com'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('tester@gmail.com', 'Marco'); // Add a recipient
//$mail->addAddress('ellen@example.com'); // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'NEW APPLICATION';
$mail->Body = "--PERSONAL INFORMATION--
First Name: $fname Middle Name: $mname Last Name: $lname
Address:$address City:$city State:$state Zip:$zip ";
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (isset($_POST['Submit']))
{
$mail->send();
}
?>
答案 0 :(得分:0)
如果isset($_POST['Submit'])
的测试失败,则表示未提供Submit
参数,或以空值存在。这有使用isset
的危险,而不是array_key_exists('Submit', $_POST)
等更准确的检查。
为什么这么晚才检查那个参数的存在?请稍早检查,以便跳过所有其他不会被使用的PHPMailer代码。