2014-01-04 4 views
-1

Это обновление.Форма не отправляет электронное письмо после отправки данных. phpmailer

На моем веб-сайте у меня есть форма для отправки данных в базу данных mysql. Но я хотел бы знать, как я могу получить электронное письмо, когда кто-то подает что-то новое.

Я пытался найти решение, но мне нужна помощь.

У меня другая форма контакта, где я использую phpmailer, поэтому я знаю, что это работает.

Он отправляет данные в базу данных mysql, но не отправляет мне электронное письмо.

HTML:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script type="text/javascript" src="t3.js"></script> 

<form action='t2.php' method='post' id="form1"> 
<div id = "container"> 

    <h3>Basic Information</h3><br> 

    <div id="main"> 

    <p><small>Name:</small><input type='text' id="name"  name='name' /><br><br><br> 

    <p><small>Email:</small><input type='text' id="email"  name='email' /><br><br><br> 

    <p><small>Comments:</small><textarea id='comments' name='comments' rows="5" cols="40" placeholder="Comments"></textarea> <br><br><br> 

    <input type='hidden' name='action' value='create' /> 
    <p><input type="submit" name="submit" id="submit" value="Email Us!" /></p> 
    <input type="reset" name='reset' value="Reset" class="reset-org"/> 
    <ul id="response" /> 

</div> 
</form> 

Javascript t3.js:

$(function() { 
// These first three lines of code compensate for Javascript being turned on and off. 
// It simply changes the submit input field from a type of "submit" to a type of "button". 

var paraTag = $('input#submit').parent('p'); 
$(paraTag).children('input').remove(); 
$(paraTag).append('<input type="button" name="submit" id="submit" value="Email Us Now!" />'); 

$('#main input#submit').click(function() { 
    $('#main').append('<img src="img/ajax/contact/ajax-loader.gif" class="loaderIcon" alt="Loading..." />'); 

    var name = $('input#name').val(); 
    var email = $('input#email').val(); 
    var comments = $('textarea#comments').val(); 


$.ajax({ 

     url: 't2.php', 
     type: 'POST', 
     data: $('#form1').serialize(), 
     success: function(results) { 
      $('#main img.loaderIcon').fadeOut(1000); 
      $('ul#response').html(results); 
      } 

}); 
}); 
}) 

Php: t2.php

<?php 

$name  =$_POST['name']; 
$email  =$_POST['email']; 
$comments =$_POST['comments']; 

$action = isset($_POST['action']) ? $_POST['action'] : ""; 

if($action=='create'){ //the the user submitted the form 

$query = "insert into testdb 
      set 
       name = '".$mysqli->real_escape_string($_POST['name'])."', 
       email = '".$mysqli->real_escape_string($_POST['email'])."', 
       comments = '".$mysqli->real_escape_string($_POST['comments'])."'"; 


if($mysqli ->query($query)) { 
    //if saving success 
    echo "User was created."; 


require 'PHPMailer/PHPMailerAutoload.php'; //replace with path to PHPMailerAutoload.php 
$mail = new PHPMailer; 



$mail->IsSMTP();          // Set mailer to use SMTP 
$mail->Host = '****'; // Specify main and backup server 
$mail->Port = ***; // set the SMTP port for the GMAIL server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = '*****';       // SMTP username 
$mail->Password = '*****!';       // SMTP password 
$mail->SMTPSecure = 'tls';      // Enable encryption, 'ssl' also accepted 

$mail->From = $email; 
$mail->FromName = $name; 
$mail->AddAddress('****, 'Info'); // Add a recipient 
$mail->AddReplyTo($email, $name);  



$mail->isHTML(true);         // Set email format to HTML 

$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 

$mail->Send(); 

} 

else{ 
//if unable to create new record 
echo "Database Error: Unable to create record."; 
} 

//close database connection 
$mysqli->close(); 
} 

?> 
+0

Эта строка 'set name = '". $ Mysqli-> real_escape_string ($ _ POST [' name ']). «',' Требуется двойная кавычка и точка с запятой в конце, а не запятая. Плюс, я сомневаюсь, что вы можете использовать 'SET' с' INSERT', однако я могу ошибаться. Но синтаксис завершения запроса неверен. –

+0

@ Fred -ii- Сам код работает. Люди могут отправлять туда данные, и они отображаются в моей таблице mysql. Мне нужно только знать, как я могу отправить данные в базу данных и отправить электронное письмо с помощью phpmailer. –

+0

Даже при использовании этого '($ _POST ['name']).", 'С запятой в конце? –

ответ

0

Если у вас есть PHPMailer установлен, вы можете сделать это (изменить, чтобы соответствуют вашей информации):

require 'PHPMailerAutoload.php'; //replace with path to PHPMailerAutoload.php 

$action = isset($_POST['action']) ? $_POST['action'] : ""; 

if($action=='create'){ 

$query = "insert into organisation 
      set name = '".$mysqli->real_escape_string($_POST['name'])."', 

$data  =$_POST; 
$name  =$data['name']; 

if($mysqli ->query($query)) { 
    //if saving success 
    echo "User was created."; 
    $mail = new PHPMailer; 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 

$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->addAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->addAddress('[email protected]');    // Name is optional 
$mail->addReplyTo('[email protected]', 'Information'); 
$mail->addCC('[email protected]'); 
$mail->addBCC('[email protected]'); 

$mail->WordWrap = 50;         // Set word wrap to 50 characters 
$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 = $name + ' was Registered'; 
$mail->Body = '<b>' + $name + '</b> was registered. Congrats on the new recruit!'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 
}else{ 
    //if unable to create new record 
    echo "Database Error: Unable to create record."; 
} 

Было бы помогло, если бы вы читали readmehere.

0

Вы говорите, что вы пытаетесь отправить по электронной почте, когда ваш скрипт получает почту, вы показали нам много кода, то одна вещь, она делает сделайте попытку отправить электронное письмо. Как говорит Фред II, есть основные синтаксические ошибки, которые необходимо изучить, как идентифицировать и исправить. Код, который вы нам показали, код не будет работать.

Отправка почты из PHP удивительно тривиальна:

mail('[email protected]','this is the subject', 'this is the body of the email'); 

Однако настройка рабочего MTA намного сложнее - и как это интегрируется с PHP зависит от операционной системы. Это все well documented in the manual.

Конечно, если вы хотите отправить что-либо более сложное, чем простой 7-разрядный текст ascii, то использование такого инструмента, как swiftmailer или phpmailer, сделает жизнь намного менее болезненной - но она по-прежнему требует рабочей интеграции с вашим MTA - следовательно, получите почту () работает сначала.

+0

Спасибо за упоминание, однако, кажется, что [код OP был «минирован»] (http://stackoverflow.com/questions/20927392/send-email-after-submitting-data-using-phpmailer#comment31422714_20927392) и является на самом деле с использованием кода, который работает. [Я сделал комментарий к влиянию] (http://stackoverflow.com/questions/20927392/send-email-after-submitting-data-using-phpmailer#comment31422883_20927392) –

+0

Как сказал Фред, это рабочий код. Я знаю, что вы имеете в виду, и это тяжелая работа. Я пытаюсь получить esmtp/mailx/xmail, установленный на моем сервере, в течение месяца без везения. (ваша ссылка была первым, что я проверил) Phpmailer работал, поэтому я был очень доволен этим. В любом случае, спасибо за ответ. –

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