php smtp 服务器

Posted

技术标签:

【中文标题】php smtp 服务器【英文标题】:php smtp server 【发布时间】:2013-03-21 06:43:19 【问题描述】:

我正在尝试通过 telnet 使用 php 发送电子邮件,但这里出了点问题。

$telnet = array();
$telnet[0] = "telnet 10.0.50.6 25\r\n";
$telnet[1] = "HELO osiris.com\r\n";
$telnet[2] = "MAIL FROM:$replyTo\r\n";
$telnet[3] = "RCPT TO:$emailsTo\r\n";
$telnet[4] = "DATA\r\n";
$telnet[5] = "From:$headers<$replyTo> \r\n To:$emailsTo\r\n Subject:$emailSubject\r\n        $body\r\n\r\n .\r\n";

@$fp = fsockopen('10.0.50.6', 25);

$count=0;

if (!$fp)
echo 'connection fail';

return false;   
else


    foreach ($telnet as $current)          
    fwrite($fp, $current);
    $smtpOutput=fgets($fp);
    $g=substr($smtpOutput, 0, 3);


        if (!(($g == "220") || ($g == "250") || ($g == "354")|| ($g == "500"))) 
        echo 'connection 2 fail';
             return false; 
    else
        $count=$count+1;
        echo $count.'<br>';
        if ($count>5)
            fclose($fp);
            return true;
        
    

结果是:

telnet 10.0.50.6 25 
220 afcc-ex-il1.rsa-otms.com Microsoft ESMTP MAIL Service ready at Sat, 30 Mar 2013 19:01:12 +0000 
220
1
HELO osiris.com 
500 5.3.3 Unrecognized command 
500
2
MAIL FROM:afcc@rsa.com 
250 afcc-ex-il1.rsa-otms.com Hello [10.0.70.22] 
250
3
RCPT TO:cfir@carmeli.me 
250 2.1.0 Sender OK 
250
4
DATA 
250 2.1.5 Recipient OK 
250
5
From:cfir To:cfir@carmeli.me Subject:test test
354 Start mail input; end with . 
354
6

【问题讨论】:

那“某事”是我们来这里猜测的? 人力资源部。好吧,如果它在 HELO 上返回 500,我首先会尝试使用 ELHO,看看它是否只想与 ESMTP 通信。但从根本上说,它实际上看起来对你的其余命令很满意。您实际上遇到了什么问题? 【参考方案1】:

你已经做好了一切,但只有一个额外的空间 在 \r\n 中的以下行。\r\n

$telnet[5] = "From:$headers<$replyTo> \r\n To:$emailsTo\r\n Subject:$emailSubject\r\n        $body\r\n\r\n .\r\n"; 

【讨论】:

以上是关于php smtp 服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用cloudflare时的php邮件和SMTP

无法使用 PHP 代码和 SMTP 服务器向 yahoo(任何地址)发送邮件

从 SMTP 服务器使用 PHP 发送电子邮件

php smtp 服务器

php电子邮件和smtp [重复]

无法在“localhost”端口 587 连接到邮件服务器,验证 php.ini 中的“SMTP”和“smtp_port”设置或在 wamp 服务器中使用 ini_set()