Codeigniter SMTP无法连接

jon*_*boy 4 php email xampp smtp codeigniter

我正在使用Codeigniter 3并在我的网站上有一个简单的联系表格.此联系表单在我的localhost XAMPP环境中完美运行,但不在我的共享Web托管(BT)上.

我不能不知道问题是什么,我一直在接触他们的支持,显然如果电子邮件帐户能够通过电子邮件客户端发送和接收电子邮件(它可以),他们不提供任何额外的支持: /

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

Server name: smtp.office365.com
Port: 587
Encryption method: STARTTLS
Run Code Online (Sandbox Code Playgroud)

我目前的代码如下;

    $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"; 
Run Code Online (Sandbox Code Playgroud)

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

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

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

    echo "<pre>";
    print_r(get_loaded_extensions());
    echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

这回来了;

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

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

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

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

220 VI1PR0602CA0001.outlook.office365.com Microsoft ESMTP MAIL服务就绪时间2017年6月19日星期一10:19:10 +0000资源(55)类型(流)int(0)string(0)""

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

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

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

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

任何帮助表示赞赏.

win*_*ayo 9

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

尝试更改您的代码:

$config['protocol']     = 'smtp';
Run Code Online (Sandbox Code Playgroud)

对此:

$config['protocol']     = 'mail';
Run Code Online (Sandbox Code Playgroud)