Почему функция mail останавливает скрипт php вместо отправки почты? - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь вызвать функцию mail, но всякий раз, когда я помещаю ее в скрипт, страница не загружается.

У меня есть следующий код для моего php.ini файла в XAMPP:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=localhost
; http://php.net/smtp-port
smtp_port=80
auth_username = XX_MYEMAIL_XX
auth_password = XXXXX_MYPASSWORD_XX

У меня 64-битный компьютер, но в сообщении об ошибке говорится, что отсутствует sendmail_from, поэтому ядал этой переменной значение. У меня работает Mercury из XAMPP, но я не знаю, настроил ли я что-либо, что нужно настроить.

Я получаю следующую ошибку

mail (): не удалось подключиться к почтовому серверу через порт 80 «localhost», проверьте настройки «SMTP» и «smtp_port» в php.iniили используйте ini_set ()

Я использовал следующий код php:

<?php     
$header = "From: varunsingh87@yahoo.com";
$to_email = 'VSpoet49@gmail.com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail function';
if (mail($to_email, $subject, $message)) {
 echo "<p>Email sent!</p>";
} else {
 echo "<p>Email not sent.</p>";
}
?>

Ниже приведены теги html по умолчанию.


Обновление

Я удалил sendmail_from и установил smtp_port на 25.

mail (): Плохой путь возврата сообщения i


Связано

Ответы [ 3 ]

1 голос
/ 12 октября 2019

Узнайте, как использовать PhpMailer и не связывайтесь с этой неловкой почтовой функцией.

https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

С этим классом вы будете отправлять все сообщения с авторизацией и без, с или безTLS / SSL и вложения (файлы, изображения).

!!! Сначала установите сервер smtp: hmailserver на localhost !!!

https://www.hmailserver.com/download

И создайте почтовый ящик электронной почты вашего домена.

С уважением

1 голос
/ 12 октября 2019

Во-первых, я никогда не слышал, чтобы почтовый сервер прослушивал порт 80. У меня тоже установлен XAMPP, но с настроенным «smpt_port = 25».

Во-вторых, у вас есть «SMTP = localhost», так что по порядкудля отправки электронной почты на вашем компьютере должен быть установлен почтовый сервер, например «Меркурий» из пакета XAMPP.

В-третьих, может быть очень сложно правильно отправлять электронную почту с помощью функции "mail ()" (аутентификация, обнаружение спама ...), поэтому лучшим решением будет избежать использования функции "mail ()" и использовать некоторыенадежная библиотека / компонент / скрипт для этого.

Это хороший совет от Baranix, чтобы научиться использовать PhpMailer или SwiftMailer (мой любимый) и настроить их для работы с реальным, хорошо настроенным почтовым сервером. на реальном хостинге.

0 голосов
/ 12 октября 2019

http://php.net/manual/language.operators.errorcontrol.php

Давайте узнаем о символе @ , но будем предупреждены о возможном поддельном статусе возврата.

Люди обычно пробуют это сначала, хотя

Попробуйте Catch Block

...