Как отправлять письма через php-скрипт?

Как я могу отправлять письма через php-скрипт? Я пытаюсь сделать что-то вроде этого:

for($k=0;$k<=$x->length-1;$k++) { for($l=0;$l<=$j-1;$l++) { if($y->item($k)->nodeValue==$JobNoArr[$l] && $AcceptanceDateArr[$l]=='0000-00-00') { //echo $v->item($k)->nodeValue ; $email = $v->item($k)->nodeValue . ","; $to = $email; $subject = "My subject"; $txt = "Hello world!"; $headers = "From: webmaster@example.com" . "\r\n" . "CC: someother.valid@email.adr"; mail($to,$subject,$txt,$headers); } } } 

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

Лучший Zeeshan

Solutions Collecting From Web of "Как отправлять письма через php-скрипт?"

Я настоятельно рекомендую не отправлять почту с помощью функции PHP mail() . Составление действительных писем и их успешное выполнение сложнее, чем кажется на первый взгляд. Существует кодировка, объединение частей, валидация и санитария, отчет об ошибках (больше, чем bool mail(...) ), поддержка аутентификации и включение и выключение … Функция mail() не предлагает ничего из этого.

Попробуйте SwiftMailer или аналогичный. Вы можете настроить его на использование функции mail() PHP и многое другое. Я очень рекомендую.

Вы слишком много пытаетесь разобраться. Попробуйте идти шаг за шагом. Сначала отправьте простое электронное письмо с жестко запрограммированными параметрами для его работы, а затем устраните его в контексте ваших вложенных циклов.

проблема почтовая функция очень ненадежна, особенно при отправке большого количества писем.

я бы порекомендовал заглянуть в библиотеку PHPmailer (использует прямое SMTP-соединение): http://phpmailer.codeworxtech.com/

Код (внутренний блок) выглядит корректно. Убедитесь, что ваша среда настроена правильно. http://ca3.php.net/manual/en/mail.setup.php

сначала сделайте

 echo $result = mail($to,$subject,$txt,$headers); 

и посмотреть, что получилось, ошибка?

Я рекомендую использовать класс phpMailer

почему у вас есть запятая в конце строки?

 $email = $v->item($k)->nodeValue . ","; 

вы отправляете по электронной почте каждый раз.

Почтовая функция php-s использует sendmail как MTA, поэтому, если некоторые письма проходят, а некоторые нет, я бы посмотрел на журнал sendmail на наличие ошибок.

Если вы находитесь на общем веб-хосте или домашнем компьютере, основным доменом для сервера будет что-то вроде

 server.your-isp-or-host.com 

Затем спам-фильтр увидит, что сообщение электронной почты

 yourdomain.com 

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

Это объясняет характер вашей ошибки.

Если вы находитесь на выделенном сервере или статический IP-адрес, указывающий на ваш домашний компьютер с правильно настроенной DNS, вышеуказанное не применяется.

если он работает, отправляя письма в gmail, тогда он должен работать нормально, отправляя письма на yahoo тоже

вы можете обнаружить, что проблема заключается не в отправке писем, а, может быть, в Yahoo, они маркируют их как спам или блокируют их на шлюзе

я замечаю, что вы добавляете запятую в конец адреса электронной почты, в чем смысл?

могут быть другие проблемы, правильны ли ваши петли, покрывают ли они все случаи, которые вы ожидали.

вы отправляете тысячи писем? может ваш mta обрабатывать скорость, с которой вы помещаете электронные письма в очередь

ваш скрипт нажимает max_execution и останавливается?