插入数据库,然后发送电子邮件

时间:2017-06-14 04:07:47

标签: php

我被迫违背自己的意愿使用PHP,所以我需要一些帮助。

谷歌搜索后,我有以下基本代码,我想知道它是否正常。

这是一个发布之前"即将推出"页面,用户输入的电子邮件地址,插入到mysql数据库并获取回复消息。这一切都发生在托管服务器上。

理想情况下,我想生成一些带有图像等的HTML,并在电子邮件正文中发送该HTML。有人知道如何在PHP中做到这一点吗?

<?php
    $servername = "localhost:3306";
    $username = "userblah";
    $password = "passblah";
    $dbname = "blah";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "INSERT INTO prelaunch_users (email)
    VALUES ($_GET['email'];)";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();

    $to      = $_GET['email'];
    $subject = 'Welcome';
    $message = 'hello';
    $headers = 'From: blah@blah.co.nz' . "\r\n" .
        'Reply-To: blah@blah.co.nz' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);
?> 

我认为我可能也需要托管邮件服务器的用户名和密码。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用如下的prpared语句: -

<?php
    if(!empty(trim($_GET['email']))){
        $conn = new mysqli("localhost:3306", "userblah", "passblah", "blah");

        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

        if ($stmt = $conn->prepare("INSERT INTO prelaunch_users (email) VALUES (?)")) {

            $stmt->bind_param("s",$_GET['email']);

            if($stmt->execute()){
               // Add you mail code here
            }else{
                 echo "Error: ". $conn->error;
            }

            $stmt->close();
        }
        $conn->close();
    }else{
        die('email is required');
    }
?>

用于发送带图像的html邮件。请检查以下帖子

Sending HTML Email With Images - PHP Tutorial