我使用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,这也适用于本地但不适用于远程网络主机。
还有什么我应该尝试,或要求我的网站主机检查?目前我没有想法。
感谢任何帮助。
答案 0 :(得分:6)
我不知道这是否适用于您的情况,但我有同样的问题。它使用宅基地在我的本地开发工作,但在hostgator中它的错误。我做了什么来修复它,是我将协议的值更改为邮件。
尝试更改您的代码:
$config['protocol'] = 'smtp';
到此:
$config['protocol'] = 'mail';