email — Как отправить SMTP-запрос и прочитать ответ с помощью php curl?

Я пытаюсь отправить smtp просьба к моему smtp сервер установлен в freebsd и прочитать успешный или неудачный ответ?
Это мой код:

$url = '192.168.1.227:25/';
$user = 'admin';
$pass = '123';

$params = array(
'User'      => $user,
'passwor'   => $pass,
'to'        => '[email protected]',
'subject'   => 'test',
'html'      => 'body',
'text'      => 'text',
'from'      => '[email protected]',
);$session = curl_init($url);
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
curl_setopt($session, CURLOPT_HEADER, 1);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
$info = curl_getinfo($session);
curl_close($session);
echo $response;
print_r($info);

0

Решение

CURL не подходит для этого. Хотя это поддерживает простые SMTP-соединения, как правило, он не предназначен для более сложных случаев использования.

cURL разработан для HTTP, где у вас обычно есть один запрос с набором параметров (заголовки HTTP-запроса) и один ответ.

SMTP-связь, однако, больше похожа на «пинг-понг». Чтобы реализовать SMTP-клиента, вам придется работать с необработанными сокетами TCP: написать SMTP-команду в сокете, прочитать / обработать ответ, написать следующую команду и так далее.

Кроме того, SMTP, как он реализован в настоящее время, имеет множество причуд и странных сторон на серверах и клиентах. Например, подход на основе PHP / cURL не сможет поддерживать серые списки, если вы не будете управлять своей собственной очередью для временно отклоненной почты.

Если у вас нет веских причин для этого (и много времени, а также высокая устойчивость к фрустрации), вы должны использовать клиентскую библиотеку, такую ​​как Swiftmailer, вместе с настоящим MTA для исходящей почты.

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

..

¹ если вы на мгновение оставите в покое и т.д.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]