使用PHP发送电子邮件

时间:2015-03-11 18:15:00

标签: php html

我正在尝试使用php邮件功能发送电子邮件。但是,我不确定如何构造消息部分。我正在处理HTML表单,我希望它是html的消息。我怎样才能将所有输出都包装在一个变量中,我可以将它作为message参数传递给mail()函数?

我的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

3 个答案:

答案 0 :(得分:0)

这不是关于php邮件的真正问题,而是关于连接的更多信息。要解决您的问题,请创建一个变量,让我们将其称为$message。然后,将echo附加到$message,而不是echo '<strong>' . $background[$key] . '</strong><br/>';。因此,您不是$message .= '<strong>' . $background[$key] . '</strong><br/>';,而是{{1}}。

答案 1 :(得分:0)

我认为使用SwiftMailerPHPMailer会更容易 它们都有一个非常容易使用的API,用于使用SMTP或php mail()函数发送电子邮件。

祝你好运。

答案 2 :(得分:0)

正如Brian Ray所提到的,您应该创建一个包含以后使用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 controlob_get_contents的一些额外阅读。