php - 如何从 php 将唯一的确认码插入到电子邮件中

标签 php mysql email

我和学生有一个 MySQL 数据库。我有选择其中部分或全部并向所选内容发送电子邮件的功能。

我还可以将电子邮件保存在数据库的表中。我现在需要一种方法,当我向选定的学生发送电子邮件时,在电子邮件正文中插入一个唯一的链接,当他们点击该链接时,可以在后端将其状态从“批准”更改为“确认” ,同时他们会看到一条消息,表明他们的请求已得到确认。

我现在用于发送邮件并将其插入数据库的代码是这样的:

<?php
    session_start();
    $page_name = 'Send Emails';
        require_once('header.php');
        if(!empty($_POST['send'])){
            $id_mail= "";
            foreach ($_POST['selected'] as $key => $value) {
                echo "$key - $value <br>";
                $id_mail .= "$value, ";
                }
                $id_mail= substr($id_mail, 0, -2);
            }
        if(!empty($_POST['Send2'])){
                 $mail= mysqli_query($conn, "SELECT student_id, mail FROM students WHERE student_id IN($_POST[id_mail])"); 
            echo "SELECT student_id, mail FROM students WHERE student_id IN($_POST[id_mail]) "; 
             while ($row_mail = mysqli_fetch_assoc($mail)) { 
                 echo "$row_mail[mail] "; 
             $to = $row_mail['mail']; 
             $subject = $_POST['head']; 
             $message = $_POST['body']; 
             $headers = 'From: code-week@example.com' . "\r\n" . 
            'Please do not reply to this message' . "\r\n" . 
            'X-Mailer: PHP/' . phpversion(); 
             mail($to, $subject, $message, $headers); 
             $sent_mails= mysqli_query($conn, "INSERT INTO sent_mails (id_st, mail_head, content) VALUES ('$_POST[id_mail]', '$subject', '$message') "); 
             if (mysqli_query($conn, $sent_mails)){ 
                echo "Success"; 
             } else { 
            echo "Error ". $sent_mails . "<br/>" . mysqli_error($conn); 
            } 
          } 
       } 
        mysqli_close($conn); 
 ?> 
    <form name='mail2' method='post' action='send_email.php'><br/>
    <input type="hidden" name="id_mail" value="<?php echo $id_mail; ?>">
        <br/>

    <input type='text' name='head' placeholder='header'>
    <br/>
    <br/>

    <textarea name='body' rows="4" cols="50" placeholder='body'></textarea><br/>
    <br/>
    <input class='btn btn-danger'type='submit' name="Send2" value='Send'>
    </form>

最佳答案

您想要在电子邮件中添加一个链接,以便收件人证明这是他的电子邮件地址(类似于 http://www.example.com/confirmEmailAddress?randomCode=abcdef) , 正确的? 那么,如果您还在链接中添加了接收者的电子邮件地址或其唯一的数据库 ID,则该随机代码不必是唯一的: http://www.example.com/confirmEmailAddress?NotNecessarilyUniqueRandomCode=abcdef&email=john.doe@example.com 然后,您只需根据这两列检查数据库即可。

关于php - 如何从 php 将唯一的确认码插入到电子邮件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31917166/

相关文章:

python - 通过电子邮件请求批准并处理 Python + Django

php - 在 PHP 中从父类(super class)获取子类命名空间

php - 在同一页面查询执行php脚本

MySql 获取整行的列上的最大值

java - 如何避免空表出现 "SELECT max(rank) FROM test"的空结果?

java - 在 GAE 中发送带有图像的 html 电子邮件

php - 在codeigniter中以文本格式导入excel文件

php - 通过 PHP、SQL STATE IM004、驱动程序在 SQL_HANDLE_ENV 上的 SQLAllocHandle 与 SQL Server 的连接错误

mysql - 使用 mysql 查询从表中选择所有行,并指示存在于另一个表中

php - php邮件功能中邮件发送失败