如果表单提交,则使用PHPMailer

时间:2016-02-03 02:00:28

标签: php forms phpmailer

我只是在提交表单时尝试运行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();
    }
?>

1 个答案:

答案 0 :(得分:0)

如果isset($_POST['Submit'])的测试失败,则表示未提供Submit参数,以空值存在。这有使用isset的危险,而不是array_key_exists('Submit', $_POST)等更准确的检查。

为什么这么晚才检查那个参数的存在?请稍早检查,以便跳过所有其他不会被使用的PHPMailer代码。