PHP Mailing script отправляет пустое сообщение на мою электронную почту

По иронии судьбы, хотя мой код с точки зрения синтаксиса полностью корректен, когда я проверяю его, он отправляет сообщение на адрес электронной почты, в котором нет ничего ни мудрого, ни вложения. Кто-нибудь может подсказать мне, что могло пойти не так? Вот HTML и PHP, любая помощь приветствуется, спасибо!

HTML:

<h3 style="padding-left:290px">Consulta de orçamento</h3>
<form id="form" method="post" action="formulario_orcamento.php" style="padding-left:100px" enctype="multipart/form-data">
    <fieldset>
        <label><input name="Nome" type="text" value="Nome" id="Nome" onBlur="if(this.value=='') this.value='Nome'" onFocus="if(this.value =='Nome' ) this.value=''"></label>
        <label><input name="E-mail" type="text" value="E-mail" id="E-mail" onBlur="if(this.value=='') this.value='E-mail'" onFocus="if(this.value =='E-mail' ) this.value=''"></label>
        <label><input name="Telefone" type="text" value="Telefone" id="Telefone" onBlur="if(this.value=='') this.value='Telefone'" onFocus="if(this.value =='Telefone' ) this.value=''"></label>
        <label><select name="Duvidas" id="Duvidas" style="height:20px; width: 623px">
            <option value="Elaboração de questionários">Elaboração de questionários</option>
            <option value="Amostragem">Amostragem</option>
            <option value="Análise exploratória">Análise exploratória</option>
            <option value="Pesquisas online">Pesquisas online</option>
            <option value="Tabulação">Tabulação</option>
            <option value="Análises específicas">Análises específicas</option>
            <option value="Outras Dúvidas">Outras Dúvidas</option>
        </select></label>
        <label><input name="Outras" type="text" value="Outras Dúvidas - Especificar" id="Outras Duvidas" onBlur="if(this.value=='') this.value='Outras Dúvidas - Especificar'" onFocus="if(this.value =='Outras Dúvidas - Especificar' ) this.value=''"></label>
        <label><input name="Arquivos" type="file" style="height:25px"></label>
        <label><textarea name="Mensagem" id="Mensagem" onBlur="if(this.value==''){this.value='Mensagem'}" onFocus="if(this.value=='Mensagem'){this.value=''}">Mensagem</textarea></label>
        <input type="submit" name="Enviar" id="Enviar" value="Enviar" class="button" style="background:#64d0ff; font-size:14px; color:#fff; display:inline-block; padding:6px 20px 5px 20px; box-shadow:0 1px 1px #fff; width:70px; height:35px" onmouseover="this.style.backgroundColor='#1f497d', this.style.color='#fecf06'" onmouseout="this.style.backgroundColor='#64d0ff', this.style.color='#ffffff'">
    </fieldset>
</form>

PHP

<?php

error_reporting(E_ALL);
ini_set('display_errors', true);

$name = $_POST['Nome'];
$email = $_POST['E-mail'];
$telephone = $_POST['Telefone'];
$message = $_POST['Mensagem'];
if($_POST['Duvidas'] == "Outras Dúvidas")
{
    $question = $_POST['Outras'];
}
else
{
    $question = $_POST['Duvidas'];
}

if($_FILES['Arquivos']['name'])
{
    if(!$_FILES['Arquivos']['error'])
    {
        $new_file_name = strtolower($_FILES['Arquivos']['tmp_name']);
        $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

        $tmp_name = $_FILES['Arquivos']['tmp_name'];
        $ftype = $_FILES['Arquivos']['type'];
        $fname = $_FILES['Arquivos']['name'];
        $fsize = $_FILES['Arquivos']['size'];
    }
}

if (file_exists($tmp_name))
{
    if(is_uploaded_file($tmp_name))
    {
        $file = fopen($tmp_name,'rb');
        $data = fread($file,filesize($tmp_name));
        fclose($file);
        $data = chunk_split(base64_encode($data));
    }

    $to      = "quick.analytics@2frame.com.br";
    $subject = "Consulta de orçamento";
    $header = "From: danielle.steffen@2frame.com.br"."\r\n";
    $header .= "Content-type: multipart/mixed;\r\n";
    $header .= " boundary=\"{$mime_boundary}\"";
    $header .= "MIME-Version: 1.0\r\n";

    $message .= "--{$mime_boundary}\r\n
        Content-Type: {$ftype};\r\n .
        name=\"{$fname}\" \r\n
        Content-Disposition: attachment;\r\n .
        filename=\"{$tmp_name}\" \r\n .
        Content-Transfer-Encoding: base64\r\n
        $data . \r\n ";

    $msg = "This is a multi-part message in MIME format.\n\n
        Content-Type: text/plain; charset=\"iso-8859-1\"\n .
        Content-Transfer-Encoding: 7bit\n\n .
        $message . \n\n
        Mensagem enviada em ".date("d/m/Y").", os dados seguem abaixo:\n
        Nome: $name \n
        E-mail: $email \n 
        Telefone: $telephone \n
        Dúvida: $question \n";

    if (isset ( $_POST['Enviar']))
    {
        $res = mail($to,$subject,$msg,$header);
    }
    if($res)
    {
        echo 'Mensagem enviada para '.$to.'';
    }
    else
    {
        echo 'Por favor corrija seus erros.';
    }
}
?>

3 ответа

Сообщение обрывается точкой с запятой в конце первой строки:

$msg = "This is a multi-part message in MIME format.\n\n";
    "--{$mime_boundary}\n" .
    "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .

Поэтому следующие строки имеют неверный синтаксис. Это также происходит дальше вниз.

Также обратите внимание, что идентификаторы не могут содержать пробелы.

Я считаю, что окончания строк для границ mime (и их строк содержимого) должны быть '\ r \ n', а не \ n. '\ n' может использоваться для (простого) текстового содержимого.

Я полагаю, что границы MIME также должны быть уникальными, и у вас, похоже, два одинаковых имени.

Но я не использовал их, чтобы кто-то мог поправить меня;)

Изменить эту строку 72

$res = mail($to,$subject,$msg,$header);

К этому

$res = mail($to,$subject,$message,$header);
Другие вопросы по тегам