Электронная почта: SMTP и php - PullRequest
0 голосов
/ 24 октября 2009

Пытаетесь отправить электронное письмо по SMTP, оно не работает, любая помощь?

//SMTP info
$host = "smtp.gmail.com";
$username = "taylor.mitchellstjoseph@googlemail.com";
$password = "password";
$from = "Taylor";//From email address
$to = "taylor@t-webdesign.co.uk";//Change this to your inbox


$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject);
// HTML email
//$headers .= "MIME-Version: 1.0" . "\r\n";
//$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

$smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password));

//Send to you
$mail = $smtp->send($to, $headers, $message);
if (PEAR::isError($mail)) {
    echo("<h1>** Whoops! Error!. **</h1> <p>Please call us instead.</p>");
    echo("<p>" . $mail->getMessage() . "</p>");
} else {
    echo("<h1>Thank you for your inquiry!</h1> <p>Thank you for signing up for our event. Your request for our guestlist has been received. Please check your email for the confirmation.</p> ");
}

Ответы [ 5 ]

2 голосов
/ 24 октября 2009

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

1 голос
/ 24 октября 2009

Ваш $ from может быть вашей проблемой. Это не совсем правильный адрес электронной почты. Попробуйте либо изменить его на реальный адрес, либо вообще пропустить.

0 голосов
/ 24 октября 2009

Обратите внимание, что многие интернет-провайдеры требуют, чтобы вы использовали свой собственный SMTP-сервер и блокировали другие.

0 голосов
/ 24 октября 2009

Похоже, ваш $ from не является действительным адресом электронной почты. Вы можете попробовать заменить это на что-то более похожее на «name@example.com».

Однако у меня был небольшой успех со стандартной библиотекой PHP SMTP, поэтому я всегда использую открытый код phpmailer . Это так же просто, и отправляет как HTML, так и обычный текст, выдает очень полезные сообщения об ошибках, если что-то идет не так и т. Д.

Удачи.

0 голосов
/ 24 октября 2009

В документации google сказано, что порты 465 или 587 должны использоваться для соединений с SMTP-сервером. Похоже, что Mail_smtp использует 25 по умолчанию. Попробуйте явное значение 465 или 587 с параметром 'port'

$smtp = Mail::factory(
    'smtp',
    array('host' => $host,
          'port' => 465,     // explicit port 465 or 587
          'auth' => true,
          'username' => $username,
          'password' => $password),
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...