2015-03-11 6 views
-1

Я пытаюсь использовать функцию php mail для отправки электронной почты. Однако я не уверен, как структурировать часть сообщения. Я обрабатываю HTML-форму, и я хочу, чтобы это сообщение html. Как я могу поместить весь вывод в переменную, которую я могу передать в качестве аргумента сообщения функции mail()?Отправка электронной почты с помощью PHP

МОЯ PHP:

//Contact Information 
$array = $_POST['contact']; 

echo '<hr>CONTACT INFORMATION<hr>'; 

foreach ($array as $key=>$value) { 
    if ($value != NULL) { 
     echo '<strong>' . $contact[$key] . '</strong><br/>'; 
     echo $value . '<br/><br/>'; 
    } 
} 

//Services Information 
$array = $_POST['services']; 

echo '<hr>SERVICES INFORMATION<hr>'; 

foreach ($array as $key=>$value) { 
    if ($value != NULL) { 
     echo '<strong>' . $services[$key] . '</strong><br/>'; 
     echo $value . '<br/><br/>'; 
    } 
} 

//Background Information 
$array = $_POST['background']; 

echo '<hr>BACKGROUND INFORMATION<hr>'; 

foreach ($array as $key=>$value) { 
    if ($value != NULL) { 
     echo '<strong>' . $background[$key] . '</strong><br/>'; 
     echo $value . '<br/><br/>'; 
    } 
} 

//Services Needed 
$value = $_POST['servicesneeded']; 
$value = rtrim($value, ", "); 

echo '<hr>WHICH SERVICES ARE YOU INTERESTED IN?<hr>'; 
echo $value; 

//Goals 
$value = $_POST['goals']; 
$value = rtrim($value, ", "); 

echo '<hr>WHAT IS THE CORE PURPOSE OF YOUR PROJECT?<hr>'; 
echo $value; 
if (!empty($_POST['goalsOther'])) { 
    echo '<br/>OTHER: ' . $_POST['goalsOther']; 
} 

........ I have about a dozen or so of these codeblocks 
+0

Пожалуйста. Прошу вас. Пожалуйста. Защитите свою почтовую функцию. Не превращай свой любящий, добрый сервер в мстительную ненавистную спамбокс. – Ohgodwhy

ответ

0

Это не вопрос о PHP почте, но больше о конкатенации. Чтобы решить вашу проблему, создайте переменную, назовем ее $message. Затем вместо echo внесите необходимые значения, добавьте их в $message. Итак, вместо echo '<strong>' . $background[$key] . '</strong><br/>'; у вас будет $message .= '<strong>' . $background[$key] . '</strong><br/>';.

0

Я думаю, что это будет намного проще для вас использовать SwiftMailer или PHPMailer Они оба имеют очень простой в использовании API для отправки электронной почты с использованием SMTP или PHP почты (функция).

удачи.

0

Как упомянуто Брайаном Рэем, вы должны создать переменную, содержащую текст сообщения, который затем отправляется с использованием функции mail(). В зависимости от настройки вашего сервера вы получите , чтобы получить содержимое выходного буфера (вещи, которые вы раньше выложили), и вместо отправки его в браузер загрузите его в переменную. Вот пример, как это может быть достигнуто:

ob_start(); // enable output buffering 
ob_clean(); // if content has been buffered before, discard it 

// this would contain your echo() statements 
echo(...); 
... 

// load the data from the output buffer into a variable 
$message= ob_get_contents(); 
ob_clean(); // remove the buffered contents from the output buffer 

// send the mail: 
// PLEASE add security measures to avoid being used as spambot; I would strongly 
// recommend to not allow any user input for the $recipient variable or 
// additional header variable (if applicable) 
mail($recipient, $subject, $message); 

Вещи, чтобы иметь в виду: буферизация вывода не всегда доступен и выходной буфер отличается от сервера к серверу. Если достигнут предел буфера, сервер автоматически очистит данные (= отправьте его в браузер), в этом случае вы не найдете никаких усеченных данных внутри выходного буфера. Метод в порядке, если вы полностью контролируете свой сервер, не разрешаете прямой доступ к почтовой программе и можете убедиться, что буфер достаточно большой, чтобы содержать сгенерированный вывод. Некоторые дополнительные данные по output control и ob_get_contents.