sendmail () php help - PullRequest
       10

sendmail () php help

1 голос
/ 26 декабря 2009

Я получаю сообщение об ошибке при отправке письма из формы

Не удалось подключиться к почтовому серверу через порт «mail.yoursite.com» 25, проверить настройки SMTP и smtp_port в php.ini или использовать ini_set () в C: \ xampp \ xampp \ htdocs \ send. PHP на линии 8

Предупреждение: mail () [function.mail]: ответ SMTP-сервера: 550 ОТКЛЮЧЕН ДОСТУП в C: \ xampp \ xampp \ htdocs \ send.php в строке 9

Не удалось доставить сообщение ...

вот код

mail.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="send.php" action="POST">
Enter Name : <input type="text" name="name" />
Enter E-Mail : <input type="text" name="email" />

Enter Subject: <input type="text" name="subject" />

Enter Message: <input type="text" name="mess" />

<input type="submit" name="Submit" />
</form>
<?php

?>



</body>
</html>

send.php

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$body = $_POST['subject'];
$message=$_POST['message'];
//ini_set("sendmail_from","name@yoursite.com");
//ini_set("SMTP","mail.yoursite.com");
mail("name@yoursite.com", $name, $message, "From :$from");
if (mail('nishantmshah@gmail.com', $name, $body, $message, "From :$from")) {
  echo("<p>Message successfully sent!</p>");
 } else {
  echo("<p>Message delivery failed...</p>");
 }
?>

Ответы [ 5 ]

1 голос
/ 26 декабря 2009

Вы используете версию php для win32 и ее smtp-реализацию mail (). Это крошечный MTA, который не может выполнить какую-либо аутентификацию. Если сервер smtp, на который вы пытаетесь переслать электронную почту, требует от вас аутентификации mail (), произойдет сбой.
Либо используйте (и настройте) sendmail для win32. Или класс / библиотека почтовой программы, которая реализует аутентификацию, например SwiftMailer .

Кстати: Xampp объединяет в себе SMTP-сервер Mercury. В конфигурации по умолчанию он принимает письма от локальных php-скриптов. Но тогда вам нужно настроить mecury для пересылки писем другому MTA.

0 голосов
/ 23 сентября 2012

Как указал VolkerK - используйте Swiftmail, самодостаточный, нет необходимости в SMTP-сервере. Я использовал два дня с Mercury + xampp, не мог заставить его работать.

Первый пример по этой ссылке работает сразу:

http://swiftmailer.org/docs/sending.html

0 голосов
/ 26 декабря 2009

В основном, если вы находитесь на хост-сервере, отправка электронного письма с php так же проста, как пить холодную воду.

if(mail('to@bla.bla','subject','content here i include sometime var_export($var,1)'))
 echo 'email send succefull';
else
  echo 'emaiol coudnt be send';

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

0 голосов
/ 26 декабря 2009

Вам необходимо установить этот Модуль PEAR , если вы хотите использовать аутентификацию, поскольку она не предусмотрена в функции mail PHP.

Отправка почты из PHP с использованием аутентификации SMTP - Пример

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <recipient@example.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "mail.example.com";
$username = "smtp_username";
$password = "smtp_password";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>
0 голосов
/ 26 декабря 2009

Сообщение SMTP server response: 550 ACCESS DENIED предлагает мне проверить ваши учетные данные для этого сервера снова Ваше имя пользователя или пароль могут быть неверными.

...