Ответ 1
Вероятно, это ошибка конфигурации. Если вы настаиваете на использовании функции PHP mail
, вам нужно будет отредактировать php.ini
.
Если вы ищете более простой и универсальный вариант (на мой взгляд), вы должны использовать PHPMailer.
Я новичок в PHP, и я использую почтовую функцию для отправки писем, которые не работают. Я получаю сообщение об успешном завершении, но все же он не работает.
тот же код
<?php
$email_to = "[email protected]";
$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, и это базовый script, который найден на веб-сайте.
Я пробовал другие скрипты, связанные с почтой, они тоже не работали.
Я ПОЛУЧАЮ ЭТО script В ВЕБ-САЙТЕ НЕ на локальном хосте
Вероятно, это ошибка конфигурации. Если вы настаиваете на использовании функции PHP mail
, вам нужно будет отредактировать 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 e.g) mail.yourdomain.com
smtp_port = 25(check your admin for original port)
Если ваш сервер требует аутентификации для отправки почты, используйте функцию почты PEAR.
" Просто потому, что вы отправляете электронное письмо, это не значит, что он придет."
Отправка почты - это серьезный бизнес. домен, который вы используете, поскольку ваш адрес "From:" может быть настроен на отклонение электронной почты с вашего веб-сервера. Для более подробного обзора (и некоторых советов, что нужно проверить), см. http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html
Функция почты не гарантирует фактическую доставку почты. Все, что нужно, это передать сообщение внешней программе (обычно sendmail). Для этого вам нужен правильно настроенный SMTP-сервер. Также имейте в виду, что он не поддерживает аутентификацию SMTP. Вы можете проверить библиотеку PEAR:: Mail SwiftMailer, обе из них предоставляют больше возможностей.
Проверьте настройки SMTP в файле php.ini. У вашего хоста должна быть документация о том, какие учетные данные использовать. Возможно, вы можете проверить свой файл журнала ошибок, у него может быть больше информации.
Для HostGator вам необходимо использовать следующие заголовки:
$headers = 'From: [email protected]' . " " .
'Reply-To: [email protected]' . " " .
'X-Mailer: PHP/' . phpversion();
Это работало только для меня, когда у пользователя был адрес электронной почты хоста, а Reply-To может быть чем-то другим, например. От: [email protected], Ответ на: [email protected]
http://support.hostgator.com/articles/specialized-help/technical/php-email-from-header http://support.hostgator.com/articles/specialized-help/technical/how-to-use-sendmail-with-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.-]+\.[a-z]{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 = '[email protected]';
$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 CODE
<?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="[email protected]">
<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-\.][email protected]([\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>
Посмотрите этот простой и легкий учебник по почте php Нажмите здесь для обучения