Создание новой строки в $ body почтовой функции PHP - PullRequest
7 голосов
/ 09 января 2012

У меня есть PHP mail (): функция, работающая для формы, которую я использую на своем сайте.Сейчас я пытаюсь отформатировать атрибут $ body, чтобы он выглядел лучше и организованнее, когда я получаю последующее электронное письмо.

Я пытался \ n и пытался
, и оба дают мне

Вот фрагмент кода, с которым я работаю (я думаю, что это просто вопрос синтаксиса, который я делаю неправильно):

if(!empty($brandname) && !empty($firstname) && !empty($lastname) && !empty($email) && !empty($goals) && !empty($bio)){
        $to = 'test@test.com';
        $subject = 'Submission Form';
        $body = 'Brand Name: '.$brandname.'<br />Name: '.$firstname.' '.$lastname.'<br />Email: '.$email.'<br />About the Company:'.$bio;
        $headers = 'From: '.$email;

Это просто отображает <br />как текст в электронном письме, которое я получаю.Это было то же самое, когда я использовал \ n (я полагаю, это действительно правильный способ сделать это).Что я делаю неправильно?Благодаря.

Ответы [ 6 ]

8 голосов
/ 09 января 2012

Вы должны поместить \n в двойные кавычки ", а не в одинарные кавычки ' Если вы хотите, чтобы эта последовательность интерпретировалась как символ новой строки (перевод строки 0x0A)

Посмотрите на эту документацию php:

http://php.net/manual/en/language.types.string.php

3 голосов
/ 01 ноября 2013

(PHP 4, PHP 5)

$body = 'Brand Name: '.$brandname."\r\n".'Name: '.$firstname.' '.$lastname."\r\n".'Email: '.$email."\r\n".'About the Company:'.$bio;

Используйте "\r\n" для новой строки, как указано выше

2 голосов
/ 28 августа 2013

используйте "<br>" вместо \n это будет работать на 100% мое открытие

например,

$subject="Mail from customer ".$_POST['Name'].`"<br>"`;

наслаждайся:)

1 голос
/ 09 января 2012

Из справочной страницы функции mail () мы узнаем, что для отправки электронных писем в формате HTML необходимо указать дополнительные заголовки.Это сжато продемонстрировано в примере # 4 .

Однако, только для переносов строк, я бы не советовал использовать HTML.Для этого просто вставьте «\ n» в строку, убедившись, что используете двойные кавычки, как упомянуто Авраамом.

1 голос
/ 09 января 2012

самый простой способ для этого

$newline = '
';

используйте переменную $ newline в любом месте, где вы хотите (:

0 голосов
/ 23 июля 2015

Я не могу добавить комментарий к ответу Мухаммеда Сакиба, но я хотел сказать, что вы не должны использовать <br> в качестве замены для \r\n, потому что это может привести к тому, что письмо будет слишком длиннымспам-фильтры.Новые строки важны для того, чтобы сделать электронную почту более понятной и обеспечить успешную доставку!

Я рекомендую следующий метод:

$output[] = "line 1";
$output[] = "line 2";
$EmailBody = join("\r\n",$output);

Также вы должны убедиться, что вы «дезинфицируете» заголовки, чтобы избежать внедрения заголовкаИсходя из пользовательского ввода, вот функция, которая дважды останавливает инъекцию:

function sanitize(&$data){
   return str_ireplace(array("\r", "\n", "%0a", "%0d"), '', stripslashes($data));
}


$headers = 'From: '.sanitize($email);

Если вы хотите, чтобы теги HTML отображались в электронном письме, измените тип с помощью заголовка:

$headers = 'Content-type: text/html;\r\nFrom: '.sanitize($email);

Если вы отображали HTML, вы должны очистить вводимые пользователем данные, чтобы избежать чего-либо неожиданного ... например, HTML-инъекция.Используйте эту функцию везде, где вы отображаете пользовательский ввод в HTML:

function htmlclean($str){
    return htmlentities($str, ENT_QUOTES);
}

например, $ body = "Brand Name:".htmlclean ($ фирменный);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...