在mysql中插入记录后自动邮件服务

时间:2016-06-02 09:03:08

标签: php mysql email

我正在网站上工作,我希望在用户注册后发送一个otp。所以我想首先将otp与用户的其他细节一起保存在表中,然后我想使用触发器将otp发送给用户。是否可以使用触发器通过电子邮件发送otp。 请指导我如何做到这一点。

如果是,还有其他方法可以让我知道如何做到这一点。

提前致谢。

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做。

由于您只提供了肤浅的信息,我的回答将是同一类型。

由于您正在执行PHP代码来执行您正在执行的操作,因此您可以创建类似

的函数
function sendMyMail($recipient, $message, $subject);

并在某处实施。 要在此功能中实际发送邮件,我建议PHP Mailer。有一些例子和更多。 注意:您需要一个现有的SMTP客户端,任何现有和工作的电子邮件地址都应该这样做。 PHP Mailer将使用此邮件自动发送邮件。在没有现有电子邮件的情况下实施自己的解决方案需要大约几个星期我会说(也许不是,但它真的很复杂)

修改 这就是我用PHP Mailer发送邮件的方式

function sendMail($recipients, $subject, $message, $altMessage)
{
    if(dirname($_SERVER["PHP_SELF"]) == "/")
    {
        require "phpmailer/PHPMailerAutoload.php";
    }
    else
    {
        require "../phpmailer/PHPMailerAutoload.php";
    }

    //testXSS is a custom Function
    $subject = testXSS($subject);
    $message = nl2br($message);//To display line breaks in HTML

    $recipients = explode(",", $recipients);//$recipients is a comma seperater string of email addresses

    $amountRecipients = count($recipients);

    $mail = new PHPMailer;

    $mail->isSMTP();                                        // Set mailer to use SMTP
    $mail->Host = "smtp.example.com";                       // Specify main and backup SMTP servers, sometimes this is also mail.example.com or something else
    $mail->SMTPAuth = true;                                 // Enable SMTP authentication
    $mail->Username = "yourAdress@example.com";             // SMTP username
    $mail->Password = "SomeStrongPassword";                 // SMTP password
    $mail->SMTPSecure = "tls";                              // Enable TLS encryption, `ssl` also accepted
    $mail->Port = "a number, depending on your settings";   // TCP port to connect to
    $mail->CharSet = "utf-8";                               // Set charset to utf-8

    $mail->setFrom("noreply@example.com", "NOREPLY");

    for($i = 0; $i < $amountRecipients; $i++)
    {
        $mail->addAddress($recipients[$i]);                 //optional: Name as second param, not used here
    }

    $mail->addReplyTo("noreply@example.com", "Noreply");

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

    $mail->Subject = "Whatever: ".$subject;
    $mail->Body    = $message;                              //Any Mail content. Can include HTML Code
    $mail->AltBody = $altMessage;                           //If the recipient does not display HTML Mails this should not contain HTML Code

    $result = ($mail->send());

    if($result)
    {
        return 1;
    }
    else
    {
        $comment = "What went wrong";
        writeToLog("DESCRIPTION", $comment);
        return 0;
    }
}