it-roy-ru.com

Как настроить PHP отправить электронную почту?

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

  $to = "[email protected]";
  $subject = "Test mail";
  $message = "My message";
  $from = "[email protected]";
  $headers = "From:" . $from;
  mail($to,$subject,$message,$headers);

Когда я пытаюсь запустить программу, это то, что я получаю:

 Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set().

Подскажите пожалуйста, какой адрес включить в переменную $ from. Нужен ли для этого сервер smtp? Как я могу отправлять почту, используя localhost? Подскажите пожалуйста что именно редактировать в файле php.ini

Я новичок во всем этом .. Пожалуйста, помогите мне ..

5
abcdefgh

Вместо этого используйте PHPMailer: https://github.com/PHPMailer/PHPMailer

Как это использовать:

require('./PHPMailer/class.phpmailer.php');
$mail=new PHPMailer();
$mail->CharSet = 'UTF-8';

$body = 'This is the message';

$mail->IsSMTP();
$mail->Host       = 'smtp.gmail.com';

$mail->SMTPSecure = 'tls';
$mail->Port       = 587;
$mail->SMTPDebug  = 1;
$mail->SMTPAuth   = true;

$mail->Username   = '[email protected]';
$mail->Password   = '[email protected]#';

$mail->SetFrom('[email protected]', $name);
$mail->AddReplyTo('[email protected]','no-reply');
$mail->Subject    = 'subject';
$mail->MsgHTML($body);

$mail->AddAddress('[email protected]', 'title1');
$mail->AddAddress('[email protected]', 'title2'); /* ... */

$mail->AddAttachment($fileName);
$mail->send();
4
pooria

Вам необходимо настроить службу smtp на локальном компьютере, чтобы отправлять электронные письма. Есть много доступных свободно просто поиск по гуглу. 

Если у вас есть сервер или VPS, загрузите скрипт, и он будет работать нормально. 

2
user2541120

Обычно хорошим местом для начала, когда вы сталкиваетесь с проблемами, является руководство . На странице настройка электронной почты объясняется, что существует большая разница между почтовой командой PHP, работающей в MSWindows и в любой другой операционной системе; Рекомендуется при публикации вопроса предоставить соответствующую информацию о том, как настроена эта часть вашей системы и в какой операционной системе она работает.

Ваш PHP настроен для взаимодействия с SMTP-сервером - по умолчанию для компьютера с MSWindows, но либо у вас не установлен MTA, либо он блокирует соединения. В то время как для коммерческого веб-сайта, на котором работает собственный MTA, надежно занимает довольно много места в списке того, что нужно сделать, это не тривиальное упражнение - вам действительно нужно знать, что вы делаете, чтобы его настроить и запустить безопасно. В вашем случае было бы гораздо разумнее использовать службу, настроенную и управляемую кем-то другим.

Поскольку вы будете подключаться к удаленному MTA с помощью адреса Gmail, вам, вероятно, следует использовать сервер Gmail; вам потребуется аутентификация SMTP и, возможно, поддержка SSL - ни одна из них не поддерживается функцией mail () в PHP. Вот простой пример использования swiftmailer с gmail или вот пример использования phpmailer

1
symcbean

Вы не сможете отправить сообщение через почтовые серверы других людей. Узнайте у своего хост-провайдера, как отправлять электронные письма Попробуйте отправить письмо с вашего сервера без PHP, вы можете использовать любой почтовый клиент, как Outook. После того, как все заработает, попробуйте настроить PHP.ini с помощью конфигурации SMTP (отправка электронной почты) вашего почтового клиента.

1
neves

Чтобы это исправить, вы должны проверить ваш PHP.INI и настройки почтовых служб, которые установлены на вашем сервере.

Но мой лучший совет для вас - забыть о функции mail(). Это зависит от настроек PHP.INI, его конфигурация отличается в зависимости от платформы (Linux или Windows) и не может обрабатывать SMTP-аутентификацию, что является большой проблемой в наши дни. Слишком сильная головная боль.

Вместо этого используйте «PHP Mailer» ( http://phpmailer.worxware.com ), это класс PHP, доступный бесплатно, и он может обрабатывать практически любой SMTP-сервер, внутренний или внешний, с или без аутентификация, она работает точно так же в Linux и Windows и не зависит от настроек PHP.INI. Он содержит множество примеров, он очень мощный и простой в использовании.

0
Marcovecchio

настройте свой php.ini следующим образом `SMTP = smtp.gmail.com

[mail function]

; XAMPP: закомментируйте это, если вы хотите работать с SMTP-сервером, таким как Mercury

; SMTP = smtp.gmail.com

; smtp_port = 465

; Только для Win32 .; http://php.net/sendmail-from ; sendmail_from = postmaster @ localhost

0
achref akrouti