Отправка писем с использованием PHP, возникшие проблемы при настройке SMTP-сервера - PullRequest
0 голосов
/ 08 июля 2011

Попытка отправить электронное письмо для активации для новых зарегистрированных пользователей, вот код:

$to = $email;
$subject = "Activate your account!";
$headers = "From: noreply@test.com";    
$body = "..."

$mail($to, $subject, $body, $headers);

В обучении phpacademy преподаватель использовал

ini_set("SMTP", $server);

Я не могу понятьчто делать.Я думаю, что мой SMTP-сервер должен быть моей учетной записью Yahoo.Как я могу отправлять электронные письма?

Ответы [ 5 ]

1 голос
/ 08 июля 2011

Когда мне приходилось отправлять электронные письма активации после регистрации пользователей, я рассмотрел тот же SMTP-маршрут, но даже если вам удается его запустить, существуют определенные недостатки при использовании SMTP

  1. Задержка врассылка писем.
  2. Письма, считающиеся спамом
  3. Конфиг и т. д.

Попробуйте, это пока очень дешевый и надежный сервис для меня.www.postmarkapp.com У них есть API, которые вы можете подключить с помощью PHP.Мой пример кода PHP, который находится в Production, выглядит следующим образом.

    // Create a "server" in your "rack", then copy it's API key
define('POSTMARKAPP_API_KEY', 'xyz-blah-blah-blah');

// Create a "Sender signature", then use the "From Email" here.
// POSTMARKAPP_MAIL_FROM_NAME is optional, and can be overridden
// with Mail_Postmark::fromName()
define('POSTMARKAPP_MAIL_FROM_ADDRESS', 'email address that you are sending from-google apps email in my case');
define('POSTMARKAPP_MAIL_FROM_NAME', 'Description of the Sender name');

// Create a message and send it
Mail_Postmark::compose()
    ->addTo($to, $to)
    ->subject('whatever subject you want to put here for your email')
    ->messagePlain($pin_message)
    ->send();

Да, это так просто, когда вы создали виртуальный сервер с postmarkapp.Угадайте, какие первые 1000 писем бесплатны, так что вы можете попробовать их, а если не используете SMTP, по-своему.После первой 1000 я думаю, что 5000 стоит 7 долларов или около того.Действительно хороший и дешевый, и у меня вообще не было простоев.

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

Функция PHP mail () отправляет электронное письмо, но для его показа требуется более 10 минут

1 голос
/ 08 июля 2011

Если вы собираетесь отправлять электронную почту с помощью функции PHP mail, вам сначала нужно настроить SMTP-сервер на вашем ПК. Другим способом, вы можете использовать класс, чтобы сделать это без установки каких-либо вещей на вашем компьютере. PHP mailer известно, что это делается в несколько строк: Вот пример с сайта проекта:

<?php

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();  // telling the class to use SMTP
$mail->Host     = "smtp.example.com"; // SMTP server

$mail->From     = "from@example.com";
$mail->AddAddress("myfriend@example.net");

$mail->Subject  = "First PHPMailer Message";
$mail->Body     = "Hi! \n\n This is my first e-mail sent through PHPMailer.";
$mail->WordWrap = 50;

if(!$mail->Send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}
?> 

Официальный сайт: http://phpmailer.worxware.com

1 голос
/ 08 июля 2011

$server должно быть именем (или IP-адресом) компьютера, на котором запущен демон SMTP-сервера и к которому у вас есть доступ.Это должно работать со службой Yahoo (возможно, что-то вроде smtp.yahoo.com), но вам нужно будет указать имя пользователя и пароль, если вы собираетесь отправить адрес электронной почты, который не является @ yahoo.com.Более распространенным является использование локального сервера, как то, что ваш офис / школа настроил бы для вас.Или, если вы используете операционную систему unix-ish, вы можете просто пропустить строку и оставить ее по умолчанию localhost.

1 голос
/ 08 июля 2011

Нет, ваша учетная запись отличается от сервера .В качестве переменной $server должно быть указано подходящее имя хоста или IP-адрес SMTP-сервера, например $server = "mail.myisp.net";.

Проверьте свой почтовый клиент, чтобы найти свой собственный почтовый сервер, или спросите своего провайдера.

0 голосов
/ 08 июля 2011

если вы работаете на сервере Linux, вы должны проверить, установлен ли сервер как SMTP-сервер, если нет, лучше настроить его в php.ini http://fr.php.net/manual/en/mail.configuration.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...