gremlintv2
19-06-2016, 13:59
Есть вот такой скрипт:
<?php
require 'phpmailer\PHPMailerAutoload.php';
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to']))
exit("Введите адрес в виде somebody@server.com");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
$array = $_POST['mail_msg'];
//ЗДЕСЯ IP и USERAGENT клиента добавляються к меседжу кривовато правда =\ не так ли?
$array .= $_SERVER['SERVER_NAME'];
$array .= $_SERVER['HTTP_USER_AGENT'];
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'логин';
$mail->Password = 'пас';
$mail->SMTPSecure = 'ssl';
$mail->Port = '465';
$mail->CharSet = 'UTF-8';
$mail->From = ('логин@gmail.com');
$mail->FromName = ('название');
$mail->addAddress($_POST['mail_to']);
$mail->Body = $array;
$mail->AltBody = $_SERVER['SERVER_NAME'];
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
if (isset($_FILES['mail_file']) &&
$_FILES['mail_file']['error'] == UPLOAD_ERR_OK) {
$mail->AddAttachment($_FILES['mail_file']['tmp_name'],$_FILES['mail_file']['name']);
}
}
// Отправляем почтовое сообщение
if ( $mail->send()) exit("Письмо отправлено");
else exit("Письмо неотправлено");
?>
В нем мне нужно чтобы переменной $mail->Body присвоилось значение переменной $array которая в свою очередь равна:
$array = $_POST['mail_msg'];
$b = " "
$array .= $b
$array .= $_SERVER['SERVER_NAME'];
$array .= $b
$array .= $_SERVER['HTTP_USER_AGENT'];
В этом случае php ругается на переменную $b
Т.е. вопрос заключается в следующем:
1)можно ли как-то окультурить этот код (одна рабочая строка вместо шести)
2)можно ли как-то переменной $b присвоить перенос строки.
<?php
require 'phpmailer\PHPMailerAutoload.php';
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to']))
exit("Введите адрес в виде somebody@server.com");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
$array = $_POST['mail_msg'];
//ЗДЕСЯ IP и USERAGENT клиента добавляються к меседжу кривовато правда =\ не так ли?
$array .= $_SERVER['SERVER_NAME'];
$array .= $_SERVER['HTTP_USER_AGENT'];
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'логин';
$mail->Password = 'пас';
$mail->SMTPSecure = 'ssl';
$mail->Port = '465';
$mail->CharSet = 'UTF-8';
$mail->From = ('логин@gmail.com');
$mail->FromName = ('название');
$mail->addAddress($_POST['mail_to']);
$mail->Body = $array;
$mail->AltBody = $_SERVER['SERVER_NAME'];
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
if (isset($_FILES['mail_file']) &&
$_FILES['mail_file']['error'] == UPLOAD_ERR_OK) {
$mail->AddAttachment($_FILES['mail_file']['tmp_name'],$_FILES['mail_file']['name']);
}
}
// Отправляем почтовое сообщение
if ( $mail->send()) exit("Письмо отправлено");
else exit("Письмо неотправлено");
?>
В нем мне нужно чтобы переменной $mail->Body присвоилось значение переменной $array которая в свою очередь равна:
$array = $_POST['mail_msg'];
$b = " "
$array .= $b
$array .= $_SERVER['SERVER_NAME'];
$array .= $b
$array .= $_SERVER['HTTP_USER_AGENT'];
В этом случае php ругается на переменную $b
Т.е. вопрос заключается в следующем:
1)можно ли как-то окультурить этот код (одна рабочая строка вместо шести)
2)можно ли как-то переменной $b присвоить перенос строки.