我的网站上有注册表格。完成后,详细信息存储在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> </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
变量包含用户输入表单的电子邮件.....
答案 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以获取更多信息