如何在将数据发布到数据库后发送PHP电子邮件

时间:2016-06-24 14:22:32

标签: php jquery email phpmailer

我目前正在撰写报价表。提交表单后,有一个电子邮件设置将提交的记录作为副本发送回客户端。但是,由于我使用Mandrill进行交易电子邮件,因此不再免费。我不想使用任何付费服务,现在我想使用PHPMailer发送相同的电子邮件。我发现很难理解调用php发送电子邮件。有帮助吗?我愿意接受选择。我希望在表单提交后发送电子邮件。

email.js

     function finalize_things(data, order_id){

        //posting data to the server side page
        $.post(window.location.origin+'/post/', data,function(response){
                if(response == 'success'){
                console.log(response);
                send_email(order_id, data.email, data.firstname, data.project_details, data.file_names);

           } else {

                console.log(response);
                alert('order not placed.');}
         });
       }


    function send_email(order_id, email, firstname, project_details, file_names){

           var html_message = "message here"

        data = {

                "key": "xxxxxxxxx",
                "message": {

                    "html": html_message,
                    "text": "",
                    "subject": "Your subject",
                    "from_email": "test@test.com",
                    "from_name": "Company name",

                    "to": [{
                        "email": email,
                        "name": firstname
                        }
                     ]},

                "async": false
            };

        $.ajax({url: 'https://mandrillapp.com/api/1.0/messages/send.json',

                type: 'POST',

                data: data,

                success: function(resp){

                    console.log(resp); }
              });

PHPMAILER代码:

        include_once '/../../PHPMailer/cms_db.php';
        require_once '/../../PHPMailer/PHPMailerAutoload.php';
        require_once '/../../PHPMailer/config.php';

        if (isset($_POST["email"]) && !empty($_POST["email"])) {


        $mail = new PHPMailer;

        $mail->isSMTP();                            // Set mailer to use SMTP
        $mail->SMTPAuth = true;                     // Enable SMTP authentication

        $mail->Host = $smtp_server;                 // Specify main and backup SMTP servers
        $mail->Username = $username;                 // 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("companyemail@xyz.com", "Company Name");

        $mail->addAddress($email, $firstname);   // Add a recipient

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

        $bodyContent = "test message";

        $mail->Subject = "Your Quote ID";
        $mail->Body    = $bodyContent;
        $mail->AltBody = $bodyContent;

        if(!$mail->send()) {
            echo "Message could not be sent.";
            $error = '<div class="alert alert-danger"><strong>Mailer Error: '. $mail->ErrorInfo.'</strong></div>';
        } else {
            $error = '<div class="alert alert-success"><strong>Message has been sent</strong></div>';
        }
        }

4 个答案:

答案 0 :(得分:1)

所以,如果你不想使用像gmail这样的外部服务......你需要设置自己的邮件服务器(postfix,sendmail等)。请注意,网络服务器经常有板载potfix(httpd + php已经。+ mysql + postfix)。 你的托管后缀已经?使用standard mail function,php脚本来检查:

checkout

如果有效 - 根据此代码编写自己的脚本或使用phpmailer(它具有本地邮件守护程序的设置)

PS PHPMailer可以通过外部网络服务器发送邮件,例如gmail https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps(此处为关键字:<?php $to = 'yourmail@gmail.com'; $subject = 'test subj'; $mail_body = 'test body'; mail($to, $subject, $mail_body); ?> )或通过本地服务器,例如postfix - 请参阅{{ 3}} - 关键行是$mail->isSMTP(); 并且您当前的代码段用于使用EXTERNAL服务,而不是用于LOCAL!

答案 1 :(得分:0)

你的js改变了这一行:

$.ajax({url: 'https://mandrillapp.com/api/1.0/messages/send.json',

为:

$.ajax({url: 'http://yourserver.tld/send_phpmailer.php',

在send_phpmailer.php中使用类似的东西:

<?php

//////  Part 1. Set up variables

$key = $_POST['key']; // need for mandrill, you can omit this
$html = $_POST['message']['html'];
$text = $_POST['message']['text'];
$subject = $_POST['message']['subject'];
$from_email = $_POST['message']['from_email'];
$from_name = $_POST['message']['from_name'];
$to_email = $_POST['message']['to']['email'];
$to_name = $_POST['message']['to']['name'];

//////  Part 2. Including PHPMailer
include_once '/../../PHPMailer/cms_db.php';
require_once '/../../PHPMailer/PHPMailerAutoload.php';
require_once '/../../PHPMailer/config.php';

//////  Part 3. Sending letter by PHPMailer
$mail = new PHPMailer;

$mail->isSMTP();

//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

$mail->Debugoutput = 'html';

$mail->Host = 'smtp.gmail.com';

$mail->Port = 587;

$mail->SMTPSecure = 'tls';

$mail->SMTPAuth = true;

$mail->Username = "username@gmail.com";
$mail->Password = "yourpassword";

//Set who the message is to be sent from
$mail->setFrom( $from_email, $from_name);

//Set an alternative reply-to address
//$mail->addReplyTo('replyto@example.com', 'First Last');

//Set who the message is to be sent to
$mail->addAddress($to_email, $to_name);

//Set the subject line
$mail->Subject = $subject;

//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML($html);

//Replace the plain text body with one created manually
$mail->AltBody = $text;

//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.png');

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

?>

答案 2 :(得分:0)

我以自己的方式尝试这种编码

<?php
include ('config.php');

if(isset($_POST['submit']))
{
        $name=mysqli_real_escape_string($conn,$_POST['name']);
        $email=mysqli_real_escape_string($conn,$_POST['email']);
        $phone=mysqli_real_escape_string($conn,$_POST['phone']);
        $msg=mysqli_real_escape_string($conn,$_POST['msg']);
        
        
        $sql="insert into contact(`name`,`email`,`phone`,`msg`) values('$name','$email','$phone','$msg')";
    //  $result=mysqli_query($conn,$sql);
        
        
         if(mysqli_query($conn, $sql)){ 
                $to='akhilsai.innovkraft@gmail.com'; // Receiver Email ID, Replace with your email ID
                $subject='Form Submission';
                $message="Name :".$name."\n"."Phone :".$phone."\n"."Wrote the following :"."\n\n".$msg;
                $headers="From: ".$email;

                $sentmail=swiftmail($to, $subject, $message, $headers);
                header('localtion:index.html');            
          } 
          else{ 
            echo "ERROR:"; 
        } 
       
       
    
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Feedback Form</title>
    
</head>
<body>
    
    <div class="main">
        
        <div class="info">Give Your Feedback!</div>
        
        <form action="#" method="post" name="form" class="form-box">
            
            <label for="name">Name</label><br>
            <input type="text" name="name" class="inp" placeholder="Enter Your Name" required><br>
            
            <label for="email">Email ID</label><br>
            <input type="email" name="email" class="inp" placeholder="Enter Your Email" required><br>
            
            <label for="phone">Phone</label><br>
            <input type="tel" name="phone" class="inp" placeholder="Enter Your Phone" required><br>
            
            <label for="message">Message</label><br>
            <textarea name="msg" class="msg-box" placeholder="Enter Your Message Here..." required></textarea><br>
            
            <input type="submit" name="submit" value="Send" class="sub-btn">
    
        </form>
    
    </div>
</body>
</html>

答案 3 :(得分:0)

<?php
include ('config.php');

if(isset($_POST['submit']))
{
        $name=mysqli_real_escape_string($conn,$_POST['name']);
        $email=mysqli_real_escape_string($conn,$_POST['email']);
        $phone=mysqli_real_escape_string($conn,$_POST['phone']);
        $msg=mysqli_real_escape_string($conn,$_POST['msg']);
        
        
        $sql="insert into contact(`name`,`email`,`phone`,`msg`) values('$name','$email','$phone','$msg')";
    //  $result=mysqli_query($conn,$sql);
        
        
         if(mysqli_query($conn, $sql)){ 
                $to='akhilsai.innovkraft@gmail.com'; // Receiver Email ID, Replace with your email ID
                $subject='Form Submission';
                $message="Name :".$name."\n"."Phone :".$phone."\n"."Wrote the following :"."\n\n".$msg;
                $headers="From: ".$email;

                $sentmail=swiftmail($to, $subject, $message, $headers);
                header('localtion:index.html');            
          } 
          else{ 
            echo "ERROR:"; 
        } 
       
       
    
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Feedback Form</title>
    
</head>
<body>
    
    <div class="main">
        
        <div class="info">Give Your Feedback!</div>
        
        <form action="#" method="post" name="form" class="form-box">
            
            <label for="name">Name</label><br>
            <input type="text" name="name" class="inp" placeholder="Enter Your Name" required><br>
            
            <label for="email">Email ID</label><br>
            <input type="email" name="email" class="inp" placeholder="Enter Your Email" required><br>
            
            <label for="phone">Phone</label><br>
            <input type="tel" name="phone" class="inp" placeholder="Enter Your Phone" required><br>
            
            <label for="message">Message</label><br>
            <textarea name="msg" class="msg-box" placeholder="Enter Your Message Here..." required></textarea><br>
            
            <input type="submit" name="submit" value="Send" class="sub-btn">
    
        </form>
    
    </div>
</body>
</html>