PHP确认电子邮件

时间:2014-01-31 14:06:46

标签: php email mailer

我的网站上有注册表格。完成后,详细信息存储在CSV文件中,但我也想向用户发送确认电子邮件。问题是电子邮件空白,我所做的是创建了一个template.php文件,其中包含我要发送的电子邮件结构,在此模板结构中,我有来自确定注册日期的其他文件的功能。 template.php中的模板包含在我在from_to_csv.php中调用的函数中,作为mail()atrebiutes的一部分:

希望这是有道理的,你们理解我看看代码:

的template.php

   <?php

function getMailContent(){

$subject = "OPES Academy- Workshop confirmation";
$message = "
<body style='background-color: #eeeeee; margin: 0 auto; font-family: 'lato',sans-serif'>

<table style='background-color:#ffffff' width='600' heigth='auto' cellspacing='0' cellpadding='0' align='center'>
    <tr>
        <td>
            <table width='600' style='background-color: #5e8ab5;' align='center' cellpading='0' cellspacing='0'>
                <tr>
                    <td>
                        <p style='padding-left: 20px;'><img src='http://opesacademy.com/emails/images/logo.png'
                                                            width='100' alt='Opes Academy'></p>
                    </td>
                    <td style='text-align: right; padding-right: 10px; color: #ffffff'>
                        KNOWLEDGE | WEALTH | POWER
                    </td>
                </tr>
            </table>
        </td>
    </tr>

    <tr>
        <td style='padding: 10px;'>

            <h1 class='skinytxt text-center txtblue'>Thank you for reserving your place</h1>

                    <p>&nbsp;</p>

                    <p class='txt-white text-center'>Thanks for your registration, we will be looking forward to see you at the";

                     ?>
                     <?php
                        require('helper.php');
                        echo ConvertDate( $_SESSION['date'] );
                    ?>
                    <?php
 $message.="
                    <p align='center'>Address: 6 Thomas More Square, London, E1W 1XZ</p>

                    </p>

                    <p class='txt-white text-center'>If you have any more questions we will be glad to help you, just call us on 020 3675 9000 or email us on
                        support@opesacademy.com</p>

        </td>
    </tr>

</table>

<table width='600' style='background-color: #5e8ab5;' align='center' cellpading='0' cellspacing='0'>
    <tr>
        <td>
            <p style='padding-left: 10px; padding-right: 10px; font-size: 10px'>Trading and investing often
                involves a very high degree of risk. Past results are
                not indicative of future returns and financial instruments can go down as well as up
                resulting
                in you receiving less than you invested. Do not assume that any recommendations, insights,
                charts, theories, or philosophies will ensure profitable investment. Spread betting, trading
                binary options and CFD's carry a high risk to your capital, can be very volatile and prices
                may
                move rapidly against you. Only speculate with money you can afford to lose as you may lose
                more
                than your original deposit and be required to make further payments. Spread betting may not
                be
                suitable for all customers, so ensure you fully understand the risks involved and seek
                independent advice if necessary</p>
        </td>
    </tr>
</table>

</body>";

$headers = "Content-type: text/html\r\n";

return compact($subject, $message, $headers);
}
?>

form_to_csv.php

    $to = $data['email'];

   require('template.php');
$mailContent = getMailContent();

//csv
if(@$_POST['land']=='fw'){
    $path='/home/content/24/12131124/html/files/Admin/CSV_Binary/';
    $fName=$path.'free_workshop-'.date( "F_j_Y" ).".csv";
    //mail($to, $subject, $message, $headers,"-f info@opesacademy.com");
  mail($to, $mailContent['subject'], $mailContent['message'], $mailContent['headers'],"-f info@opesacademy.com");


}

$to变量包含用户输入表单的电子邮件.....

4 个答案:

答案 0 :(得分:2)

您的邮件方法不会返回任何内容。 请添加压缩('标题','消息','主题');

然后在其他函数中使用返回的数组。

<?php
// you might place the following method into mail.php

// formerly your mail function, renamed to avoid function name clash
// with PHP's own function mail
function getMailContent(){
   $subject = "OPES Academy- Workshop confirmation";
   $message = "Message";
   $headers = "Content-type: text/html\r\n";

   // return the things :)
   return compact('subject', 'message', 'headers');
}

// Usage:

// from_to_csv.php

// you need to include the file mail.php, 
// if you want to access the function  getMailContent()
// uncomment this line, if you split the PHP code into the files.
// include 'mail.php';    

// fetch mail content as array
$mailContent = getMailContent();

// access array values
mail($to, 
     $mailContent['subject'], $mailContent['message'], 
     $mailContent['headers'],
     "-f info@opesacademy.com"
);
?>

答案 1 :(得分:0)

无法在本地函数外部访问局部变量(在本例中为$ message和$ header)。这被称为“变量范围”&#39;你应该多做一些阅读(这里:http://www.php.net/manual/en/language.variables.scope.php)。

在这种情况下,$ local和$ header在Local Scope:function mail()中声明,当你调用PHP Mail函数时,你试图在全局作用域中访问它们。

您必须将其从函数中传回,才能在form_to_csv.php文件中访问它们。

答案 2 :(得分:0)

看起来你正试图从你的Mail()函数中访问$ subject,$ message和$ headers变量,除非你先退回它们,否则将无法访问...试试这个,在你的模板中放PHP :

function MyMail() {
   // Your variables and content here


   return Array(
    "subject" => $subject,
    "message" => $message,
    "headers" => $headers;
   );
}

在您的主文件中:

$to = $data['email'];

require('template.php');
$content = MyMail();

//csv
if(@$_POST['land']=='fw'){
    $path=='/home/content/CSV/';
    $fName=$path.'free_workshop-'.date( "F_j_Y" ).".csv";
     mail($to, $content["subject"], $content["message"], $content["headers"],"-f info@opesacademy.com");

}

答案 3 :(得分:0)

一个非常简单的解决办法就是让template.php不是一个函数。

删除该行

function mail(){

然后是结束花括号

}

你的脚本运行得很好。

检查http://www.php.net/manual/en/language.variables.scope.php以获取更多信息