Функция почты PHP не работает

Я написал базовый скрипт для работы с почтой. Я пытаюсь запустить этот скрипт через сервер WAMP.

<?php
phpinfo();

$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";
$headers = "From: $from";
$res= mail($to,$subject,$message,$headers);
echo " $res Mail Sent.";
?> 

Я установил SMTP, sendmail_from в файле php.ini. Это дает мне следующую ошибку

Предупреждение: mail() [function.mail]: не удалось подключиться к почтовому серверу через порт 25 "mucse409.eu.xyz.com", проверьте настройки "SMTP" и "smtp_port" в php.ini или используйте ini_set() в C :\wamp\www\email.php в строке 9 Почта отправлена.

Я могу пропинговать SMTP-адрес с моей машины. Пожалуйста, помогите мне.


person Vidya    schedule 04.09.2009    source источник
comment
возможно, почтовый провайдер блокирует ваш запрос. чтобы проверить это, используйте gmail SMTP, так как, насколько я знаю, gmail вас не заблокирует. вот настройки SMTP gmail: порт smtp.gmail.com: 465 или 587   -  person Mohamed    schedule 04.09.2009
comment
выдает ту же ошибку Предупреждение: mail() [function.mail]: не удалось подключиться к почтовому серверу через порт 465 smtp.gmail.com, проверьте настройки SMTP и smtp_port в php.ini или используйте ini_set() в C:\wamp \www\email.php в строке 8 Почта отправлена.   -  person Vidya    schedule 04.09.2009


Ответы (3)


Можете ли вы также отправлять почту с этой машины на этот smtp-сервер, используя какой-нибудь почтовый клиент, такой как MS Outlook или Mozilla Thunderbird?

Однажды у меня была проблема, что мой провайдер блокировал трафик, направленный на smtp-порты снаружи из-за заражения вирусом, и я не мог из-за этого отправлять почту, но мог пинговать сервер и порт.

person Kamil Szot    schedule 04.09.2009
comment
Я могу отправить через MS Outlook с того же SMTP-сервера. - person Vidya; 04.09.2009

Может быть заблокирован брандмауэром или чем-то подобным.

Посмотрите, можете ли вы открыть порт 25 с помощью telnet (если у вас нет программного обеспечения для этого, вы можете загрузить замазку)

person JasonWoof    schedule 04.09.2009
comment
Я не могу открыть ни адрес своего SMTP-сервера, ни smtp.gmail.com (порт 465/587). Означает ли это, что брандмауэр блокирует? - person Vidya; 04.09.2009
comment
Да, простой способ проверить, является ли это вашим локальным брандмауэром, — попробовать этот порт в других системах, где вы знаете, что он открыт. Скорее всего брандмауэр какой-то. Посмотрите на все программы брандмауэра или антивируса на вашем компьютере и на вашем маршрутизаторе, если вы за ними. - person JasonWoof; 04.09.2009

Следуя этому руководству, я смог отправить почту текст ссылки.

Отправка электронной почты с помощью Gmail и PHPMailer Новый автоматический генератор обновлений готов, прошло много времени с тех пор, как OCRALight был закончен, и немного этого и того было отшлифовано при генерации обновлений.

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

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

Если вас интересует технический аспект, продолжайте читать:

Как это было сделано:

Прежде всего, вам нужен PHP с поддержкой OpenSSL, для Windows вам нужно установить PHP и тщательно выбрать OpenSSL в списке компонентов, если у вас уже установлен PHP, не беспокойтесь, переустановка сохранит вашу конфигурацию , и вы сможете выбрать OpenSSL.

Затем загрузите PHPMailer и распакуйте его рядом с вашим основным файлом php.

Вам понадобится учетная запись Gmail (очевидно). Я рекомендую вам создать новую только для этого, главным образом потому, что конфигурация должна быть очень точной, и вы не сможете использовать ее свободно, не теряя функциональность или рискуя сломать конфигурацию.

Настройте свою учетную запись Gmail для использования почты POP, но не IMAP, ТОЛЬКО POP, просто POP.

А теперь код:

<?php
require(”PHPMailer/class.phpmailer.php”);
$update_emails = array(
    ‘Juan Perez’ => ‘[email protected]’,
    ‘Francisco Garcia’ => ‘[email protected]’,
    ‘Diana la del Tunel’ => ‘[email protected]’
  );

echo “\nSending Update Email\n”;

$mail = new PHPMailer();  // Instantiate your new class
$mail->IsSMTP();          // set mailer to use SMTP
$mail->SMTPAuth = true;   // turn on SMTP authentication
$mail->Host = “smtp.gmail.com”; // specify main and backup server
$mail->SMTPSecure= ’ssl’; //  Used instead of TLS when only POP mail is selected
$mail->Port = 465;        //  Used instead of 587 when only POP mail is selected

$mail->Username = “[email protected]”;  // SMTP username, you could use your google apps address too.
$mail->Password = “yaourextremelynotlamepassword”; // SMTP password

$mail->From = “[email protected]”; //Aparently must be the same as the UserName
$mail->FromName = “Your name”;
$mail->Subject = ‘The subject’;
$mail->Body = “The body of your message”;

foreach ($update_emails as $name => $email) {
  $mail->AddBcc($email, $name);
}

if(!$mail->Send())
{
  echo “There was an error sending the message:” . $mail->ErrorInfo;
  exit;
}
echo “Done…\n”;
?>

В этом коде я отправляю электронное письмо группе людей, поэтому я использую поле «Скрытая копия:» вместо «Кому:», чтобы добавить «Кому:», вы должны использовать AddAddress($email, $name).

Возможным обновлением будет использование базы данных MySQL для хранения адресов и предоставление веб-интерфейса для их добавления и удаления. на данный момент этого достаточно.

Итак, помните: PHP с OpenSSL; PHPMailer; Создайте учетную запись Gmail; Активировать POP-хост: smtp.gmail.com; SMTPAuth=истина; SMTPSEcure=ssl; Порт: 465; Пользователь с доменом; Пароль; $Почта-отправить();

person Vidya    schedule 11.09.2009