2016-04-12 2 views
0

Я использую Dreamweaver для создания веб-сайта, на моем веб-сайте есть форма, но когда я нажимаю кнопку отправки, она открывает мое приложение-приложение, с информацией, которую я хочу. Мне просто интересно, можно ли отправить электронное письмо на мою учетную запись, не пройдя через мой почтовый клиент. Это мой код ...Html Форма, когда она отправлена, отправляется прямо по электронной почте

BTW Я использую Dreamweaver для редактирования всего кода.

<!doctype html> 
<html lang="en-US"> 
<head> 
<meta charset="UTF-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<title>Fiction Filming</title> 
<link rel="shortcut icon" href="images/favicon3.ico" type="image/x-icon" /> 
<style type="text/css"> 
body { 
    background-color: #2c2c2c; 
} 
</style> 
<link href="Css/singlePageTemplate.css" rel="stylesheet" type="text/css"> 
<!--The following script tag downloads a font from the Adobe Edge Web Fonts server for use within the web page. We recommend that you do not modify it.--> 
<script>var __adobewebfontsappname__="dreamweaver"</script> 
<script src="http://use.edgefonts.net/source-sans-pro:n2:default.js" type="text/javascript"></script> 
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
<!--[if lt IE 9]> 
     <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> 
     <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    <![endif]--> 
</head> 
<body> 
<!-- Main Container --> 
<div class="container"> 
    <!-- Navigation --> 
    <!-- Hero Section --> 
    <!-- About Section --> 
    <!-- Stats Gallery Section --> 
    <div class="gallery"><img src="Images/Newbannercomingsoon.png" alt="" width="1000" height="500" class="logo-pic"/> </div> 
    <!-- Parallax Section --> 
    <!-- More Info Section --> 
    <!-- Footer Section --> 
    <section class="footer_banner" id="contact"> 

<form class="subscribeForm form-fix" name="Subscription Form" method="post" action="mailform.php" enctype="text/plain"> 
      <div class="newform"> 
       <div> </div> 
       <div> 
       <input id="fname" type="text" placeholder="NAME" name="name" required> 
       </div> 
       <div> 
       <input name="email" type="email" required id="email" placeholder="EMAIL"> 
       </div> 
       <div> 
       <select name="select" required id="myselect"> 
        <option>HELP/SUPPORT</option> 
        <option>BUSINESS ENQUIRES</option> 
        <option>OTHER</option> 
       </select> 
       </div> 
       <div class="text-form"> 
       <div> 
        <textarea name="textarea" required id="textarea" placeholder="TYPE YOUR TEXT HERE"></textarea> 
       </div> 
       </div> 
       <br><input name="Send" type="submit" id="Send" value="Send"> 
</div> 
</form> 
<!-- Step 1: Add an email field here --> 

<!-- Step 2: Add an address field here --> 
      <!-- Step 3: add a submit button here --> 

</section> 
    <!-- Copyrights Section --> 
<div class="copyright">&copy;2016 - <strong>Fiction filming</strong></div> 
</div> 
<!-- Main Container Ends --> 
</body> 
</html> 

Кроме того, вот мой файл php ... Если вы можете исправить это, это было бы очень полезно.

<!doctype html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset="UTF-8"> 
<META HTTP-EQUIV="refresh" content="0;URL=thankyou.html"> 
<title>Email Form</title> 
</head> 

<body> 
<?php 
if(isset($_POST['submit'])){ 
    $to = "[email protected]"; // this is your Email address 
    $from = $_POST['email']; // this is the sender's Email address 
    $sender_name = $_POST['name']; 
    $select = $_POST['select']; 
    $message = $sender_name . " wrote the following:" . "\n\n" . $_POST['textarea']; 

    $headers = "From:" . $from; 
    $headers2 = "From:" . $to; 
    mail($to,$subject,$message,$headers); 
    echo "Mail Sent. Thank you " . $name . ", we will contact you shortly."; 
    // You can also use header('Location: thank_you.php'); to redirect to another page. 
    } 
?> 
</body> 
</html> 

ЗДЕСЬ НОВОГО PHP

<!doctype html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset="UTF-8"> 
<META HTTP-EQUIV="refresh" content="3;URL=thankyou.html"> 
<title>Email Form</title> 
</head> 

<body> 
<?php 
if(isset($_POST['submit'])){ 

// Or the below if using "name="Send" for the input. Uncomment and get rid of the above 
// if(isset($_POST['Send'])){ 


    if(!empty($_POST['email']) 
    && !empty($_POST['name']) 
    && !empty($_POST['select']) 
    && !empty($_POST['textarea'])) { 

    $to = "[email protected]"; 
    $from = $_POST['email']; 
    $sender_name = $_POST['name']; 
    $select = $_POST['select']; 
    $textarea = $_POST['textarea']; 

    $message = $sender_name . " wrote the following:" . "\n\n" . $textarea; 

    if(mail($to,$subject,$message,$headers)){ 
    echo "Mail was sent. Check both your inbox and spam, as mail as done its job."; 
} 
else{ 
    echo "There was a problem. Check your logs."; 
} 

    } 

} 

    // $headers = "From:" . $from; 
    // $headers2 = "From:" . $to; 
    //echo "Mail Sent. Thank you " . $name . ", we will contact you shortly."; 
    // You can also use header('Location: thank_you.php'); to redirect to another page. 
    //} 
?> 
</body> 
</html> 
+0

Здесь есть несколько вопросов –

+0

Который не поймал –

+0

Да? Можете ли вы сказать, что это такое? –

ответ

2

Есть несколько проблем с кодом.

Во-первых, удалите enctype="text/plain". Этот тип недействителен для отправки массивов POST с помощью формы.

Вы также должны удалить <META HTTP-EQUIV="refresh" content="0;URL=thankyou.html">, поскольку это может сыграть с вами некоторые неприятные трюки.

Тогда ваш вход <input name="Send" type="submit" id="Send" value="Send"> имеет атрибут Send имени, и вы используете следующее условное заявление, которое никогда не будет стрелять вверх:

if(isset($_POST['submit'])) 

переименуйте свой вклад name="submit" или ваш условный оператор, чтобы читать if(isset($_POST['Send'])) ; выбор за вами.

Отчет об ошибках бросил бы вам что-нибудь об этом.

Теперь я не понимаю, почему у вас это есть в вашем коде $headers2 = "From:" . $to;, поскольку он нигде не используется, поэтому я не могу сказать много об этом, кроме как просто избавиться от него.

Вы также должны проверить наличие пустых полей, если кто-то решит не заполнять какие-либо или все входы, в результате чего будет пустое электронное письмо.

I.e., и я заменил ваш $_POST['textarea'] на $textarea, назначив его для массива POST.

Sidenote: см. Выше в отношении «отправить» и «отправить»; соответственно, для if(isset($_POST['submit'])).

if(isset($_POST['submit'])){ 

// Or the below if using "name="Send" for the input. Uncomment and get rid of the above 
// if(isset($_POST['Send'])){ 

    if(!empty($_POST['email']) 
    && !empty($_POST['name']) 
    && !empty($_POST['select']) 
    && !empty($_POST['textarea'])) { 

    $from = $_POST['email']; 
    $sender_name = $_POST['name']; 
    $select = $_POST['select']; 
    $textarea = $_POST['textarea']; 

    $message = $sender_name . " wrote the following:" . "\n\n" . $textarea; 

    // Put your other mail code here 

    } 

} 

Все это при условии, что mail() доступен на сервере вы работаете в этом с.

Я предлагаю вам заменить:

mail($to,$subject,$message,$headers); 

с условным оператором, чтобы проверить, если оно было отправлено:

if(mail($to,$subject,$message,$headers)){ 
    echo "Mail was sent. Check both your inbox and spam, as mail as done its job."; 
} 
else{ 
    echo "There was a problem. Check your logs."; 
} 

Добавить error reporting в верхней части файла (ов), который будет помогите найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.


Сноски:

Я заметил, что вы используете идентификаторы, так что если вы используете JS/Ajax/JQuery, что вы не включили в ваш первоначальный вопрос, будет выходит за рамки вопрос.

Неизвестно, как вы обращаетесь к своим файлам, поэтому, если вы находитесь на размещенном сайте, то то, что я вам дал, должно работать.

Если это проблема с сервером, это также выходит за рамки вопроса, и вам нужно будет связаться со своим поставщиком услуг для технической поддержки.

Если вы используете это с вашего собственного компьютера, то PHP, веб-сервер и mail() должны быть установлены, настроены правильно и использовать http://localhost/file.xxx в отличие от file:///file.xxx.

Sidenote: Если ничего не получено от <option>, тогда вам, возможно, придется дать им значения.

I.e .: <option value="HELP/SUPPORT"> делая это для других.

Я считаю, что я дал вам достаточно, чтобы двигаться дальше.

+0

Просто интересно, вы сказали, что избавились от тега , но будет ли это означать, что он не будет перенаправлен на мою страницу с благодарностью? –

+0

Кроме того, мне просто интересно, вы упомянули только $ sender_name и $ textarea. Означает ли это, что $ select будет использоваться, потому что я хотел, чтобы это было либо предметом электронной почты, либо просто где-то в сообщении ... Спасибо –

+0

@ NicholasKlvana-Hooper Добавьте его обратно тогда. Но этот '0' может перенаправлять слишком быстро и не может обрабатывать ваш PHP, но попробуйте. Вы также можете использовать заголовок для перенаправления. И разве вы не пробовали, что я включил в свой ответ? У меня есть, и это сработало красиво. Если вопрос не решен, то я не знаю, что еще сказать или сделать, чтобы помочь вам. Если он ее разрешит, тогда подумайте о принятии ответа, иначе другие могут подумать, что этот вопрос по-прежнему остается открытым/нерешенным и может публиковать больше ответов. –

0

Поскольку в виде теге у упомянутого действие как действие = «электронная почта: [email protected]» он пытается получить доступ прогноза

изменить действие на имя вашего php-файла action = "yourphpfilename.php"

+0

Извините, я на самом деле скопировал неправильную версию ... Он сделал/делает say mailform.php вместо команды mailto. –

0

В зависимости от вашего сервера конфигурации, вы не сможете отправлять почту с помощью простой функции php mail.

Чтобы проверить это, используйте:

print mail($to,$subject,$message,$headers); 

Если результат не 1, что-то не хорошо, и фиксируя его, возможно, не будет легким.

Я предлагаю вам использовать службы PHPmailer или API, такие как MailGun.

+0

Так что вместо почты я должен написать печать перед ним ... И где появится 1? Кстати, я использую Dreamweaver для редактирования кода. –

+0

Вы используете локальный сервер? У вас должен быть локальный сервер для запуска PHP, когда вы запускаете PHP-файл, вы должны увидеть выход функции. Если у вас нет локального сервера, я предлагаю XAMPP для Windows или MAMP для MAC. – pbs

+0

Извините, я немного новичок в кодировании. Что такое локальный сервер? Файл PHP запускается и перенаправляется на страницу, которую я хочу, но она не отправляет электронное письмо. –

Смежные вопросы