php里面的html发送电子邮件

时间:2016-08-10 22:32:57

标签: php html

我想从表单发送带有信息的电子邮件,但我不希望我的表单的操作将数据发送到外部php文件,我想让我的PHP代码在html中只有一个文件。这是我的结构:

<?php
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";

if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;

foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros = 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

$sTexto = $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}

if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}

//cambiar aqui el email
if (form_mail("victor@99minutos.com", $_POST[asunto],
"Los datos introducidos en el formulario son:\n\n", $_POST[email]))
echo "Su formulario ha sido enviado con exito";
?>
<html>
<body>
<form name='formulario' id='formulario' method='post' target='_self' enctype="multipart/form-data">
<p>Nombre <input type='text' name='Nombre' id='Nombre'></p>
<p>E-mail
<input type='text' name='email' id='email'>
</p>
<p>Asunto
<input type='text' name='asunto' id='asunto' />
</p>
<p>Mensaje
<textarea name="mensaje" cols="50" rows="10" id="mensaje"></textarea>
</p>
<p>Adjuntar archivo: <input type='file' name='archivo1' id='archivo1'></p>
<p>
<input type='submit' value='Enviar'>
</p>
</form>
</body>
</html>

但我不知道为什么php代码没有正确阅读,这是如何显示

的例子

enter image description here

3 个答案:

答案 0 :(得分:0)

Ok $ _POST是一个数组。它看起来像这样:

  Array $_POST
     [0]  => Array Won
     [1]  => Array Lost

也许尝试这样的事情:

foreach ($_POST as $sValor) {
    $sTexto = $sTexto."\n".$sValor." = ".$sValor[0];
}

答案 1 :(得分:0)

首先,添加标签以提交按钮(名称=&#34; enviar&#34;),当它加载时,它将尝试读取空输入并发送邮件。

while (secondOddNum - firstOddNum > 2)
    {
        if (firstOddNum % 2 > 0) //positive numbers
        {
            firstOddNum += 2;
            sumOdd += pow(firstOddNum,2);
            cout << firstOddNum << endl;

        } else // even numbers
        {
            firstOddNum += 1;
            sumOdd += pow(firstOddNum,2);
            cout << firstOddNum << endl;
        }

然后添加

<input type='submit' name="enviar" value='Enviar'>

更改foreach并将大括号({})添加到第一个foreach,同时写下&#34; asunto&#34;和&#34;邮件&#34;在带有引号的$ _POST中

if (isset($_POST["enviar"])) {
  // if (form_mail( ..... goes here
}

答案 2 :(得分:0)

你的php代码根本没有执行,而只是将自己呈现为文本。

我通过将您的代码复制到“test.html”文件然后只需使用浏览器打开它(我的情况下是Firefox)来重现您遇到的完全相同的问题。

你的PHP代码没有“错误”。可能你的问题只是你需要将文件扩展名从.html更改为.php。这样,无论你部署的服务器是什么,都可能将文件识别为php,它将在其中执行php代码而不是仅仅打印它。

作为一个注释,html代码可以(通常是)嵌入到.php文件中。