Я пытаюсь создать форму, которая будет отправлять вложения вместе с содержанием электронной почты, но я понятия не имею, что я делаю.
Я совершенно новичок в PHP и просто научился выполнять основную работу по почте, в основном, проб и ошибок, а также учебные пособия в Интернете. Но когда дело дошло до привязанностей. Теперь я полностью потерян. И, хотя сценарий PHP якобы запускается, и файл загружается, вся операция останавливается внезапно. Я также не получаю сообщения, которые должны отображаться при завершении работы скриптов, и я не получаю электронное письмо с тестовым сообщением и его вложением.
Может ли кто-нибудь помочь мне или хотя бы пройти меня, чтобы я мог понять, в чем моя ошибка? Мои 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 $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']; } $mime_boundary = "==Multipart_Boundary_x" . md5(mt_rand()) . "x"; $tmp_name = $_FILES['filename']['tmp_name']; $ftype = $_FILES['filename']['type']; $fname = $_FILES['filename']['name']; $fsize = $_FILES['filename']['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"; $msg = "This is a multi-part message in MIME format.\n\n"; "--{$mime_boundary}\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\n" . "Nome: $name\n\n" . "E-mail: $email \n\n" . "Telefone: $telephone \n\n" . "Dúvida: $question \n\n"; $message .= "--{$mime_boundary}\n"; "Content-Type: {$ftype};\n" . " name=\"{$fname}\"\n"; //"Content-Disposition: attachment;\n" . //" filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n"; $data . "\n\n" . "--{$mime_boundary}--\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.'; } } ?>
Вероятно, у вас есть ошибки PHP, которые вы не видите, попробуйте добавить эти строки в начало вашего php:
error_reporting(E_ALL); ini_set('display_errors', true);
Этот код позволит сообщать об ошибках, что, вероятно, заставит вас что-то увидеть.
Кроме того, эта строка: if($_POST['Duvidas'] = "Outras Dúvidas")
не сравнивает $_POST['Duvidas']
с "Outras Dúvidas"
но присваивает значение "Outras Dúvidas"
$_POST['Duvidas']
, что всегда верно. Используйте if($_POST['Duvidas'] == "Outras Dúvidas")
вместо (обратите внимание на ==). Это может быть причиной ваших проблем.