Это первый раз, когда я использую функцию почты. Я попытался отправить почту, используя это, и код говорит мне, что он «успешно отправлен», но я не получал почты. Я смущен, читая много статей об этом. Пожалуйста, помогите мне.
<?php if(isset($_POST['author'])&& isset($_POST['subject'])&& isset($_POST['text'])) { //Email $email_to = "lucy@yahoo.com"; $email_subject = "Query From HYPERMARKETS"; $name = $_POST['author']; // required $sub = $_POST['subject']; // required $comments = $_POST['text']; // required echo "POST:".$name.$sub.$comments; $error_message = ""; $string_exp = "^[az .'-]+$"; if(!strcmp($string_exp,$name)) { $error_message .= 'The Name you entered does not appear to be valid.<br />'; } if(strlen($comments) < 5) { $error_message .= 'The Comments you entered do not appear to be valid.<br />'; } if(strlen($error_message) > 0) { echo ("<center><table border=1 cellspacing=5 cellpadding=5><tr><th>$error_message</th></tr></table></center>"); } $email_message = "Form details below.\n\n"; $email_message .= "Name: ".$name."\n"; $email_message .= "Subject: ".$sub."\n"; $email_message .= "Comments: ".$comments."\n"; // create email headers $headers = "From: mary@yahoo.com \r\n Reply-To: mary@yahoo.com \r\n" ; if(@mail($email_to, $email_subject, $email_message, $headers)) echo "<center><table border=1 cellspacing=5 cellpadding=5><tr><th>MESSAGE SENT SUCCESSFULLY</th></tr></table></center>"; else echo "<center><table border=1 cellspacing=5 cellpadding=5><tr><th>MESSAGE NOT SENT</th></tr></table></center>"; } else echo ("<center><table border=1 cellspacing=5 cellpadding=5><tr><th>FILL ALL THE FIELDS..!!</th></tr></table></center>"); ?>
Привет, я настроил файл php.ini как
[mail function] sendmail_from = postmaster@localhost SMTP = localhost smtp_port = 25 sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
Он все еще не работает.
mail () фактически не отправляю почту. Он просто отправляет сообщение, которое вы сгенерировали, в почтовую подсистему хост-системы для обработки отправки. Результат true указывает, что подсистема отправки почты приняла сообщение как действительное. Это не означает, что сообщение отправлено.
Вам нужно посмотреть на свою почту, чтобы узнать, есть ли там сообщения в ожидании доставки, и в почтовом журнале вашей системы, чтобы узнать, генерирует ли он ошибки при попытке отправить ваши генерируемые PHP сообщения.
Даже если сообщение было успешно отправлено, это не значит, что оно будет получено. Он может быть заражен спам-фильтром или отклонен сервером или просто отправлен на неправильный адрес. Возможно, он был доставлен и в конечном итоге помечен как нежелательная почта почтовым клиентом получателя. Любое количество вещей может помешать отправке сообщения, истинный ответ от почты не означает, что он был успешно отправлен.
Раскрытие информации: Я являюсь одним из разработчиков AlphaMail
Поскольку у вас нет ошибок, вы не можете сказать, что проблема здесь. Поэтому я рекомендовал бы вручную попытаться подключиться к SMTP-серверу с вашего сервера и отправить электронное письмо вручную . Таким образом, у вас будет ошибка в руке, а не на угадывание.
Если вы не хотите этого делать, и просто хотите, чтобы он «работал», я бы рекомендовал вам использовать службу транзакций электронной почты, такую как:
Зачем?
Если вы решите пойти с AlphaMail, вы можете использовать PHP-клиент AlphaMail .
Пример:
include_once("comfirm.alphamail.client/emailservice.class.php"); $email_service = AlphaMailEmailService::create() ->setServiceUrl("http://api.amail.io/v1") ->setApiToken("YOUR-ACCOUNT-API-TOKEN-HERE"); $person = new stdClass(); $person->userId = "1234"; $person->firstName = "John"; $person->lastName = "Doe"; $person->dateOfBirth = 1975; $response = $email_service->queue(EmailMessagePayload::create() ->setProjectId(12345) // Your AlphaMail project (determines template, options, etc) ->setSender(new EmailContact("Sender Company Name", "from@example.com")) ->setReceiver(new EmailContact("Joe Doe", "to@example.org")) ->setBodyObject($person) // Any serializable object );
Еще одно преимущество AlphaMail заключается в том, что вы можете редактировать свои шаблоны непосредственно на панели управления AlphaMail , и вы можете форматировать свои письма с использованием языка шаблонов Comlang .
<html> <body> <b>Name:</b> <# payload.firstName " " payload.lastName #><br> <b>Date of Birth:</b> <# payload.dateOfBirth #><br> <# if (payload.userId != null) { #> <a href="/sign-up">Sign Up Free!</a> <# } else { #> <a href="/login?id=<# payload.userId #>">Sign In</a> <# } #> </body> </html>
Вы когда-нибудь отправляли письма на этом сервере? если не:
вам нужно настроить раздел mail function
в php.ini.
Прежде всего, вы должны иметь поддержку SMTP для отправки и получения электронной почты. Во-вторых, вы должны настроить значения SMTP
и smtp_port
в файле php.ini.
Для некоторых хостов требуется дополнительный параметр для почты. Возможно, это возможно.
$ffrom = '-fmary@yahoo.com'; if(@mail($email_to, $email_subject, $email_message, $headers, $ffrom));
Это не очень распространено, но мне приходилось иметь дело с этим, и мне потребовались годы для диагностики, поэтому я подумал, что поделюсь им на всякий случай.
Во-первых, я должен убедиться, что порт 25 открыт. Определите общедоступный IP-адрес сервера, подключившись к WhatsMyIP.org (из того же интернет-соединения, которое использует сервер), затем попробуйте следующее из командной строки:
telnet xxx.xxx.xxx.xxx 25
(замените xxx.xxx.xxx.xxx IP-адресом WhatsMyIP.org)
Если вы можете подключиться, то этот ответ не для вас. Сожалею.
Если нет, проверьте все настройки локального брандмауэра, чтобы убедиться, что порт 25 открыт на вашем конце. Порт 25 также может быть заблокирован провайдером. Оказывается, некоторые (возможно, большинство) интернет-провайдеров блокируют порт 25 по умолчанию для предотвращения спама.
Неправильно настроенные почтовые серверы легко скомпрометированы и используются в спам-ботнетах. Мне пришлось вызвать Comcast и перепрыгнуть через обручи, чтобы они разблокировали порт 25, прежде чем я смогу заставить работать мой домашний почтовый сервер. ( Сообщение форума Comcast о порте 25 ).
Если это вас не устраивает, я еще раз взглянул на конфигурацию сервера электронной почты.