Я новичок в PHP, и я использую почтовую функцию для отправки писем, которые не работают. Я получаю сообщение об успешном завершении, но все равно это не работает
тот же код
<?php $email_to = "abc@abc.com"; $email_subject = "Test mail"; $email_body = "Hello! This is a simple email message."; if(mail($email_to, $email_subject, $email_body)){ echo "The email($email_subject) was successfully sent."; } else { echo "The email($email_subject) was NOT sent."; } ?>
Я что-то пропустил, мне нужно включить любые файлы для этой функции. Я из asp.net, и это основной скрипт, который был найден на веб-сайте.
Я пробовал другие скрипты, связанные с почтой, они тоже не работали.
Я ПРОВЕРЬТЕ ЭТОТ СКРИПТ НА ВЕБ-САЙТЕ НЕ на локальном хосте
Вероятно, это ошибка конфигурации. Если вы настаиваете на использовании функции mail
PHP, вам придется редактировать php.ini
.
Если вы ищете более простой и универсальный вариант (на мой взгляд), вы должны использовать PHPMailer .
Если вы используете Ubuntu, и похоже, что sendmail не находится в /usr/sbin/sendmail
, установите sendmail с помощью терминала с помощью этой команды:
sudo apt-get install sendmail
а затем запустите перезагрузку страницы PHP, на которой написана mail()
. Также проверьте папку со спамом.
Возможно, это проблема конфигурации SMTP в файле php.ini.
Поскольку вы новичок в PHP, вы можете найти файл php.ini в корневом каталоге папки установки PHP и проверить SMTP = и smtp_port = и изменить значение на
SMTP = your mail server eg) mail.yourdomain.com smtp_port = 25(check your admin for original port)
Если ваш сервер требует аутентификации для отправки почты, используйте функцию почты PEAR.
Функция почты не гарантирует фактическую доставку почты. Все, что нужно, это передать сообщение внешней программе (обычно sendmail). Для этого вам нужен правильно настроенный SMTP-сервер. Также имейте в виду, что он не поддерживает аутентификацию SMTP. Вы можете проверить библиотеку PEAR :: Mail SwiftMailer, обе из них предоставляют больше возможностей.
« Просто потому, что вы отправляете электронное письмо, это не значит, что он придет ».
Отправка почты – это серьезный бизнес – например, домен, который вы используете, поскольку ваш адрес «From:» может быть настроен на отклонение электронной почты с вашего веб-сервера. Для более подробного обзора (и некоторых советов, что нужно проверить), см. http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html
Проверьте настройки SMTP в файле php.ini. У вашего хоста должна быть документация о том, какие учетные данные использовать. Возможно, вы можете проверить свой файл журнала ошибок, он может иметь больше информации.
Для HostGator вам необходимо использовать следующие заголовки:
$headers = 'From: user@yourdomain.com' . " " . 'Reply-To: user@yourdomain.com' . " " . 'X-Mailer: PHP/' . phpversion();
Он работал только для меня, когда у пользователя был адрес электронной почты хоста, а Reply-To может быть чем-то другим, например From: owner@domain.com, Reply-To: info@domain.com
http://support.hostgator.com/articles/specialized-help/technical/php-email-from-header http://support.hostgator.com/articles/specialized-help/technical/how-to-use-sendmail -с-PHP
Я использую это какое-то время, не знаю, все ли в курсе последних версий PHP. Вы можете использовать это в настройке одного файла или просто разделить его на два файла, такие как contact.php и index.php
contact.php | Код
<?php error_reporting(E_ALL ^ E_NOTICE); if(isset($_POST['submitted'])) { if(trim($_POST['contactName']) === '') { $nameError = '<span style="margin-left:40px;">You have missed your name.</span>'; $hasError = true; } else { $name = trim($_POST['contactName']); } if(trim($_POST['topic']) === '') { $topicError = '<span style="margin-left:40px;">You have missed the topic.</span>'; $hasError = true; } else { $topic = trim($_POST['topic']); } $telefon = trim($_POST['phone']); $company = trim($_POST['company']); if(trim($_POST['email']) === '') { $emailError = '<span style="margin-left:40px;">You have missed your email adress.</span>'; $hasError = true; } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[az]{2,4}$/i", trim($_POST['email']))) { $emailError = '<span style="margin-left:40px;">You have missspelled your email adress.</span>'; $hasError = true; } else { $email = trim($_POST['email']); } if(trim($_POST['comments']) === '') { $commentError = '<span style="margin-left:40px;">You have missed the comment section.</span>'; $hasError = true; } else { if(function_exists('stripslashes')) { $comments = utf8_encode(stripslashes(trim($_POST['comments']))); } else { $comments = trim($_POST['comments']); } } if(!isset($hasError)) { $emailTo = 'info@example.com'; $subject = 'Example.com - '.$name.' - '.$betreff; $sendCopy = trim($_POST['sendCopy']); $body = "\n\n This is an email from http://www.example.com \n\nCompany : $company\n\nName : $name \n\nEmail-Adress : $email \n\nPhone-No.. : $phone \n\nTopic : $topic\n\nMessage of the sender: $comments\n\n"; $headers = "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n"; mail($emailTo, $subject, $body, $headers); $emailSent = true; } } ?>
STYLESHEET
} .formblock{display:block;padding:5px;margin:8px; margin-left:40px;} .text{width:500px;height:200px;padding:5px;margin-left:40px;} .center{min-height:12em;display:table-cell;vertical-align:middle;} .failed{ margin-left:20px;font-size:18px;color:#C00;} .okay{margin-left:20px;font-size:18px;color:#090;} .alert{border:2px #fc0;padding:8px;text-transform:uppercase;font-weight:bold;} .error{font-size:14px;color:#C00;} label { margin-left:40px; } textarea { margin-left:40px; }
index.php | КОД FORM
<?php header('Content-Type: text/html;charset=UTF-8'); ?> <!DOCTYPE html> <html lang="de"> <head> <script type="text/javascript" src="js/jquery.js"></script> </head> <body> <form action="contact.php" method="post"> <?php if(isset($emailSent) && $emailSent == true) { ?> <span class="okay">Thank you for your interest. Your email has been send !</span> <br> <br> <?php } else { ?> <?php if(isset($hasError) || isset($captchaError) ) { ?> <span class="failed">Email not been send. Please check the contact form.</span> <br> <br> <?php } ?> <label class="text label">Company</label> <br> <input type="text" size="30" name="company" id="company" value="<?php if(isset($_POST['company'])) echo $_POST['comnpany'];?>" class="formblock" placeholder="Your Company"> <label class="text label">Your Name <strong class="error">*</strong></label> <br> <?php if($nameError != '') { ?> <span class="error"><?php echo $nameError;?></span> <?php } ?> <input type="text" size="30" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="formblock" placeholder="Your Name"> <label class="text label">- Betreff - Anliegen - <strong class="error">*</strong></label> <br> <?php if($topicError != '') { ?> <span class="error"><?php echo $betrError;?></span> <?php } ?> <input type="text" size="30" name="topic" id="topic" value="<?php if(isset($_POST['topic'])) echo $_POST['topic'];?>" class="formblock" placeholder="Your Topic"> <label class="text label">Phone-No.</label> <br> <input type="text" size="30" name="phone" id="phone" value="<?php if(isset($_POST['phone'])) echo $_POST['phone'];?>" class="formblock" placeholder="12345 678910"> <label class="text label">Email-Adress<strong class="error">*</strong></label> <br> <?php if($emailError != '') { ?> <span class="error"><?php echo $emailError;?></span> <?php } ?> <input type="text" size="30" name="email" id="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>" class="formblock" placeholder="info@example.com"> <label class="text label">Your Message<strong class="error">*</strong></label> <br> <?php if($commentError != '') { ?> <span class="error"><?php echo $commentError;?></span> <?php } ?> <textarea name="comments" id="commentsText" class="formblock text" placeholder="Leave your message here..."><?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?></textarea> <button class="formblock" name="submit" type="submit">Send Email</button> <input type="hidden" name="submitted" id="submitted" value="true"> <?php } ?> </form> </body> </html>
JAVASCRIPT
<script type="text/javascript"> <!--//--><![CDATA[//><!-- $(document).ready(function() { $('form#contact-us').submit(function() { $('form#contact-us .error').remove(); var hasError = false; $('.requiredField').each(function() { if($.trim($(this).val()) == '') { var labelText = $(this).prev('label').text(); $(this).parent().append('<br><br><span style="margin-left:20px;">You have missed '+labelText+'.</span>.'); $(this).addClass('inputError'); hasError = true; } else if($(this).hasClass('email')) { var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; if(!emailReg.test($.trim($(this).val()))) { var labelText = $(this).prev('label').text(); $(this).parent().append('<br><br><span style="margin-left:20px;">You have entered a wrong '+labelText+' adress.</span>.'); $(this).addClass('inputError'); hasError = true; } } }); if(!hasError) { var formInput = $(this).serialize(); $.post($(this).attr('action'),formInput, function(data){ $('form#contact-us').slideUp("fast", function() { $(this).before('<br><br><strong>Thank You!</strong>Your Email has been send successfuly.'); }); }); } return false; }); }); //-->!]]> </script>