Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php curl发送SMTP请求和读取响应?_Php_Email_Curl_Smtp_Freebsd - Fatal编程技术网

如何使用php curl发送SMTP请求和读取响应?

如何使用php curl发送SMTP请求和读取响应?,php,email,curl,smtp,freebsd,Php,Email,Curl,Smtp,Freebsd,我正在尝试向安装在freebsd中的smtp服务器发送smtp请求,并读取成功或失败响应? 这是我的代码: $url = '192.168.1.227:25/'; $user = 'admin'; $pass = '123'; $params = array( 'User' => $user, 'passwor' => $pass, 'to' => 'example1@exam

我正在尝试向安装在
freebsd
中的
smtp
服务器发送
smtp
请求,并读取成功或失败响应? 这是我的代码:

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

    $params = array(
        'User'      => $user,
        'passwor'   => $pass,
        'to'        => 'example1@example.com',
        'subject'   => 'test',
        'html'      => 'body',
        'text'      => 'text',
        'from'      => 'example2@example.com',
      );


    $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);

cURL不是用于此的合适工具。虽然它确实支持,但它通常不是为更高级的用例而设计的

cURL是为HTTP而设计的,在HTTP中,通常有一个带有一组参数(HTTP请求头)的请求和一个响应。ª

然而,SMTP通信更像是“乒乓”。要实现SMTP客户端,您必须处理原始TCP套接字:在套接字上写入SMTP命令、读取/处理响应、写入下一个命令,等等

而且,SMTP,正如它目前实现的那样,在服务器和客户端之间有很多奇怪的方面。例如,基于PHP/cURL的方法将无法支持greylisting,除非您管理自己的临时拒绝邮件队列

除非你有很好的理由这样做(而且时间很长,还有很高的挫折容忍度),否则你应该使用像Swiftmailer这样的客户端库和一个真正的MTA来发送邮件

另一方面,如果您只是想玩到邮件服务器的原始连接,请从命令行使用类似于
netcat
的工具,并通过

如果您离开,请将“保持活力”等放在一旁片刻