我使用此代码发送邮件。但是当我将 $ headers 和行添加到 $ body 时,它停止了工作。任何人都可以支持我找到错误或错误?
我很感激这种支持。
<?PHP
// Email Address
$youremail = 'correo@correo.com';
$memberemail = $_POST['email'];
// Register Form
if ( isset($_POST['email']) && isset($_POST['name']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
// Detect & Prevent Header Injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
// Email Format
$body = "Hola! $_POST[name]. Gracias por solicitar tu inscripción. \n";
$body .= "Analizaremos tú solicitud y en caso de resultar positiva recibirás un correo de confirmación en las próximas 24 horas. \n\n";
$body .= "Tus datos de solicitud son: \r\n"
$body .= "============================ \r\n";
$body .= "Nombre: $_POST[name] \n";
$body .= "eMail: $_POST[email] \n";
$body .= "Empresa: $_POST[telephone] \n";
$body .= "Sector: $_POST[ticket] \n\n";
$body .= "Atentamente, \n";
$body .= "Staff \n\n";
$body .= "NOTA: Para culaquier duda sobre tu proceso de inscripción te recomendamos leer las preguntas frecuentes en el sito web del evento http://www.evento.com";
//Send email
$headers = "From: Staff <contacto@evento.com>" . "\r\n" . "Bcc: admin@evento.com" . "\r\n";
mail( "To:" . $memberemail , "Nuevo registro", $body, "From:" . $headers);
}
// Subscribe Form
if( isset($_POST['subscriber']) && filter_var($_POST['subscriber'], FILTER_VALIDATE_EMAIL) ) {
$data = $_POST['subscriber'] . ";" . "\n";
$ret = file_put_contents('subscribers.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('Ouch! Al parecer hay un error.');
}
} else {
die('No se pueden enviar los datos.');
}
?>
答案 0 :(得分:1)
将$body, "From:" . $headers)
更改为$body, $headers)
您已经拥有From:
:
$headers = "From: Staff <contacto@evento.com>"...
正如评论中所述,更改并删除"To:" .
mail( "To:" . $memberemail , "Nuevo registro", $body, "From:" . $headers);
到
mail($memberemail, "Nuevo registro", $body, $headers);
Mail会自动将第一个参数设置为收件人To:
但是,您可能希望将$youremail
用作第一个参数,将$memberemail
用作From:
,因为邮件将发送给发送电子邮件的人,但我会让你决定。
参考手册:
修改强>
在测试代码之前,下一行(我忽略了)中缺少一个分号:
body .= "Tus datos de solicitud son: \r\n"
^ missing semi-colon
添加
body .= "Tus datos de solicitud son: \r\n";
如果设置了错误报告,您会看到以下解析/语法错误:
解析错误:语法错误,/ server / path / file.php中的意外'$ body'(T_VARIABLE)行号(数字)
当PHP在行号上发出解析错误信号时,它通常位于“之前”的一行,而不是实际的行号本身。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
答案 1 :(得分:0)
我认为这与以下内容有关:
你应该明确你的意思&#34;停止工作&#34;它是从服务器发出的?它落入垃圾箱了吗?它被你的智能主机拒绝了吗?