PHPMailer如何传递变量

时间:2016-04-17 14:09:52

标签: php parameter-passing phpmailer

我见过有人使用$mail->get_include_contents(),但我不确切知道它是如何运作的。

我想通过电子邮件激活帐户。我有一个模板php,html或tpl,我想传递用户名,随机密钥,电子邮件等。考虑一下我在我的所有项目中使用Smarty。

在我的gmail.php上我有:

$mail->msgHTML(file_get_contents(dirname(__FILE__).'/MailActivation.php'), $variables);

有人可以向我解释我是如何做到的吗?

2 个答案:

答案 0 :(得分:1)

¡最后!

这是结果:

    <?php

    date_default_timezone_set('Etc/UTC');

    require(dirname(__FILE__).'/../PHPMailerAutoload.php');
    require_once (dirname(__FILE__).'/../../controller/SignUpController.php');

    $variables = [$username, $email, $randomkey];

    //Create a new PHPMailer instance
    $mail = new PHPMailer;

    //Tell PHPMailer to use SMTP
    $mail->isSMTP();

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

    //Ask for HTML-friendly debug output
    $mail->Debugoutput = 'html';

    //Set the hostname of the mail server
    $mail->Host = 'smtp.gmail.com';
    // use
    // $mail->Host = gethostbyname('smtp.gmail.com');
    // if your network does not support SMTP over IPv6

    //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
    $mail->Port = 587;

    //Set the encryption system to use - ssl (deprecated) or tls
    $mail->SMTPSecure = 'tls';

    //Whether to use SMTP authentication
    $mail->SMTPAuth = true;

    //Username to use for SMTP authentication - use full email address for gmail
    $mail->Username = "your_email";

    //Password to use for SMTP authentication
    $mail->Password = "your_password_email";

    //Set who the message is to be sent from
    $mail->setFrom('user_email_from', 'title_to_display');

    //Set an alternative reply-to address: it's optional
    //$mail->addReplyTo('user_email_reply', 'user_email_name');

    //Set who the message is to be sent to
    $mail->addAddress($email, $firstname . " " . $lastname);

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

// Settin variables    
    $message = file_get_contents(dirname(__FILE__).'/MailActivation.html');
    $message = str_replace('%testusername%', $username, $message);
    $message = str_replace('%testemail%', $email, $message);
    $message = str_replace('%testrandomkey%', $randomkey, $message);

    $mail->msgHTML($message);

    //Replace the plain text body with one created manually
    //$mail->AltBody = 'This is a plain-text message body';

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

// For sending an image inline
    $mail->AddEmbeddedImage(dirname(__FILE__).'/images/frontimage.jpg', 'front', 'images/frontimage.jpg');

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


           echo "Message sent!";
        }
?>

在我的ActivationTemplate.html中,我只是创建一个html文件,我想插入我刚才放的变量:

Lorem ipsum %testusername% dolor sit amet, consectetur adipiscing elit. Integer nulla elit, mattis non leo in, ornare interdum ante. Proin eget velit purus. Sed convallis lectus sed libero ornare, sit amet pharetra nisi facilisis. Cras fermentum nulla quis purus egestas, in accumsan nisl dictum. Donec in nisi vel enim pretium posuere at nec ante. Mauris tempus velit vel urna commodo accumsan. %testemail% 

我认为你使用php模板或html并不重要。

答案 1 :(得分:0)

根据给定的文件路径包含文件,如果没有给出,则指定include_path。如果在include_path中找不到该文件,include将最终在失败前检入调用脚本自己的目录和当前工作目录。如果找不到文件,include构造将发出警告;这与require的行为不同,会发出致命的错误。

 $mail->Body = get_include_contents('sample.php', $variable); 

<强> sample.php

<table width='600px' cellpadding='0' cellspacing='0'>
<tr><td bgcolor='#eeeeee'><img src='logo.png' /></td></tr>
<tr><td bgcolor='#ffffff'  bordercolor='#eeeeee'>
<div style='border:1px solid #eeeeee;font-family:Segoe  UI,Tahoma,Verdana,Arial,sans-serif;padding:20px 10px;'>
<p>Variable one is <?php echo $one; ?>.</p>
 <p>Variable two is <?php echo $two; ?>.</p>
<p>Thanks</p>
</div>
</td></tr>
</table>