2016-03-12 5 views
-3

У меня есть этот код для отправки электронной почты. И у меня нет ошибки при отправке электронной почты.отправка электронной почты на php

if(mailSender()){ 
      echo 'meiled.'; 
     }else { 
     die('not sent');  
     } 
    function mailSender() { 
     $to = '[email protected]'; 
     $subject = 'An Abstract Submitted'; 
     $message = 'An Abstract Submitted Recently In ICNBA.org'; 
     $headers = '[email protected]'; 
     mail($to, $subject, $message, $headers); 
    } 

не отправляет электронное письмо.

+0

Вы работаете в локальной системе? или использовать какой-нибудь живой сервер для запуска этого кода? –

+2

Ваша функция 'mailSender()' всегда возвращает 'null' null как false. вы всегда получаете сообщение «не отправлено» – Naumov

+1

Вы проверяете значение, возвращаемое функцией 'mailSender()' в первой строке кода, но функция 'mailSender()' ничего не возвращает. И «ничего» означает «NULL» и ['NULL' является' FALSE'] (http://php.net/manual/en/types.comparisons.php) – axiac

ответ

2

Поскольку выражение if оценивает значение boolean, а mailSender() не возвращает.

Добавьте к вашей функции:

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

Для получения дополнительной информации о смотрите в документации PHP: http://php.net/manual/en/control-structures.if.php

+0

не могли бы вы проголосовать за мой вопрос? ( –

+0

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

+0

Да, была причина, они сказали: «Ваш вопрос не ясен, вы должны переписать свой вопрос чтобы очистить путь ». и я сделал это. Я изменил свой вопрос, и я написал его ясно. –

3

Вам нужно изменить:

$headers = '[email protected]'; в $headers = 'From: [email protected]';

и

mail($to, $subject, $message, $headers); к return mail( ... чтобы вернуть значение в противном случае MailSender ничего не вернется.

Если почта не отправляется, это может иметь много причин из-за настроек php.ini по локальной конфигурации MTA в несогласованные записи SPF. Проверьте свои почтовые журналы, чтобы узнать, есть ли какие-либо ошибки.

+0

отредактируйте ответ, потому что заголовок должен быть '$ headers = 'From: [email protected]'." \ R \ n ";' – Naumov

+1

"\ r \ n" не обязательно для одного или последнего заголовка ?! – user3173842

+0

смотри пример для получения дополнительной информации, это не последняя строка, последняя строка нужна «\ r \ n \ r \ n» – Naumov

0

@ user3173842 смотреть стандартную RFC2822 для получения дополнительной информации в прошлом заголовка линии потребности \ г \ п \ г \ п http://www.faqs.org/rfcs/rfc2822.html

From: "Joe Q. Public" <[email protected]> \r\n 
To: Mary Smith <[email protected]>, [email protected], Who? <[email protected]> \r\n 
Cc: <[email protected]>, "Giant; \"Big\" Box" <[email protected]> \r\n 
Date: Tue, 1 Jul 2003 10:52:37 +0200 \r\n 
Message-ID: <[email protected]> \r\n 
\r\n 
Hi everyone. is body 

это ответ на шоу, например заголовок извините за оффтоп

+0

Я знаю это, но я думал, что php добавит их, поскольку они всегда должны быть там, и это параметр 'headers' ... И я просто прочитал этот пример: http://php.net/manual/en /function.mail.php#example-3898 – user3173842

+0

Неправильный способ использовать функцию 'mail()', потому что вы отправляете неправильный заголовок в, из и т. д., а почтовая служба запретила вам его использовать. лучше использовать библиотеку, например, 'PHPmailer' и т. д. – Naumov

+1

Не имеет значения, если вы добавите' \ r \ n' в последний заголовок, потому что $ headers обрезается 'mail': https://github.com/php/php -src/blob/71c19800258ee3a9548af9a5e64ab0a62d1b1d8e/ext/standard/mail.C# L122 – user3173842

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