我正在使用Codeigniter 3并在我的网站上有一个简单的联系表格.此联系表单在我的localhost XAMPP环境中完美运行,但不在我的共享Web托管(BT)上.
我不能不知道问题是什么,我一直在接触他们的支持,显然如果电子邮件帐户能够通过电子邮件客户端发送和接收电子邮件(它可以),他们不提供任何额外的支持: /
我可以使用此帐户登录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主机上,我收到以下错误;
Message: fsockopen(): unable to connect to smtp.office365.com:587
(Connection timed out)
我已经读过这个问题可能与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 MAIL Service
ready at Mon, 19 Jun 2017 10:19:10 +0000 resource(55) of type (stream)
int(0) string(0) “”
在实时服务器上,我收到了这个;
Message: fsockopen(): unable to connect to
tcp://smtp.office365.com:587 (Connection timed out)
我已经尝试过Gmail smtp,这也适用于本地但不适用于远程网络主机.
还有什么我应该尝试,或让我的网站主机检查?目前我没有想法.
任何帮助表示赞赏.
解决方法:
我不知道这是否适用于你的情况,但我有同样的问题.它使用宅基地在我的本地开发工作,但在hostgator中它的错误.我做了什么来修复它,是我将协议的值更改为邮件.
尝试更改您的代码:
$config['protocol'] = 'smtp';
对此:
$config['protocol'] = 'mail';