Codeigniter SMTP无法连接

时间:2017-06-19 10:43:08

标签: php codeigniter email xampp smtp

我使用Codeigniter 3并在我的网站上有一个简单的联系表格。此联系表单在我的localhost XAMPP环境中完美运行,但不在我的共享虚拟主机(BT)上。

我无法解决问题所在,我已经与他们的支持联系,显然,如果电子邮件帐户能够通过电子邮件客户端发送和接收电子邮件(可以),他们不会#39; t提供任何其他支持:/

我可以使用此帐户登录Office365以发送和接收电子邮件。 Office365中的smpt设置是;

Server name: smtp.office365.com
Port: 587
Encryption method: STARTTLS

我目前的代码如下;

    $config['protocol']     = 'smtp';
    $config['smtp_host']    = 'smtp.office365.com'; // also tried tls://smtp.office365.com 
    $config['smtp_port']    = '587';
    $config['smtp_user']    = 'MyEmail@btconnect.com'; 
    $config['smtp_pass']    = 'MyPass'; 
    $config['smtp_crypto'] = 'tls';
    $config['mailtype']     = 'html';
    $config['wordwrap']     = TRUE;
    $config['charset']  = 'iso-8859-1';
    $config['newline']  = "\r\n"; 

在localhost中,电子邮件发送,没有任何问题。在实时Web主机上,我收到以下错误;

  

消息:fsockopen():无法连接到smtp.office365.com:587   (连接超时)

我已经读过该问题可能与OpenSSL未启用有关,但网络主机已确认已启用。我还使用以下代码检查了加载的扩展名;

    echo "<pre>";
    print_r(get_loaded_extensions());
    echo "</pre>";

返回;

Array
(
    [0] => Core
    [1] => date
    [2] => ereg
    [3] => libxml
    [4] => openssl
    [5] => pcre
    etc
    etc
)

我已经检查过我能够使用以下代码连接到smtp服务器;

$fp = fsockopen('tcp://smtp.office365.com', 587, $errno, $errstr, 10);
echo fgets($fp, 128);
var_dump($fp, $errno, $errstr);
fclose($fp);

在我的本地主机上,我收到以下消息;

  

220 VI1PR0602CA0001.outlook.office365.com Microsoft ESMTP邮件服务   准备在星期一,2017年6月19日10:19:10 +0000资源(55)类型(流)   int(0)string(0)&#34;&#34;

在实时服务器上,我收到了这个;

  

消息:fsockopen():无法连接   tcp://smtp.office365.com:587(连接超时)

我尝试过使用Gmail smtp,这也适用于本地但不适用于远程网络主机。

还有什么我应该尝试,或要求我的网站主机检查?目前我没有想法。

感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

我不知道这是否适用于您的情况,但我有同样的问题。它使用宅基地在我的本地开发工作,但在hostgator中它的错误。我做了什么来修复它,是我将协议的值更改为邮件。

尝试更改您的代码:

$config['protocol']     = 'smtp';

到此:

$config['protocol']     = 'mail';