2016-02-02 3 views
-1

Я пытаюсь запустить PHPMailer только в том случае, если моя форма отправлена. Я пробовал это несколькими разными способами, но без успеха.Запуск PHPMailer, если форма отправляет

Я предполагаю, что мой if (isset ($ _ POST ['submit'])) {tag находится в неправильном месте? Я также не уверен, какая часть этого кода действительно отправляет электронное письмо. Когда я тестирую его, используя

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 = '[email protected]';     // 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('[email protected]', 'Mailer'); 
    $mail->addAddress('[email protected]', 'Marco');  // Add a recipient 
    //$mail->addAddress('[email protected]');    // Name is optional 
    //$mail->addReplyTo('[email protected]', 'Information'); 
    //$mail->addCC('[email protected]'); 
    //$mail->addBCC('[email protected]'); 

    $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

Я ставлю, что ваш элемент формы не содержит соответствующий атрибут name. Сообщение об ошибке сообщит вам. Кроме того, убедитесь, что ваша форма имеет метод post. –

+0

и 4-й закрыт @ Дагон * согласно *. Edit: Эй, куда вы отправились в Джордж? –

+1

не проверяйте сообщение, ища поле формы. это ненадежно - вы можете сделать опечатки с обоих концов, но '$ _SERVER ['REQUEST_METHOD'] == 'POST'' на 100% надежнее. –

ответ

0

Убедитесь, что вы имеете

<input type="hidden" name="submit" value="foo" /> 

или изменить отправить кнопку

<input type="submit" value="Submit!" name="submit" /> 

, чтобы убедиться, что вы знаете, когда ваша форма была отправлена ​​с isset() проверки

Смежные вопросы