2017-06-19 16 views
3

私はCodeigniter 3を使用しており、私のウェブサイトに簡単な連絡フォームを持っています。この連絡フォームは私のローカルホストXAMPP環境では完全に動作しますが、私の共有ウェブホスティング(BT)では動作しません。Codeigniter SMTP接続できません

私は彼らのサポートに連絡してきましたが、メールアカウントが提供できない電子メールクライアントを使って電子メールを送受信できるかどうかは明らかです追加のサポート:/

このアカウントを使用して電子メールを送受信するには、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'] = '[email protected]'; 
    $config['smtp_pass'] = 'MyPass'; 
    $config['smtp_crypto'] = 'tls'; 
    $config['mailtype']  = 'html'; 
    $config['wordwrap']  = TRUE; 
    $config['charset'] = 'iso-8859-1'; 
    $config['newline'] = "\r\n"; 

ローカルホストでは電子メールが送信され、問題はありません。ライブWebホストで、私は次のエラーを受け取ります。

メッセージ:fsockopenの(): をsmtp.office365.com:587に接続できません(接続がタイムアウト)

私は問題が有効にされていないのOpenSSLに関連している可能性があることを読みましたただし、Webホストが有効であることが確認されています。私はまた、次のコードを使用してロードされた拡張機能をチェックしました。

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サービス 月、19で準備ができて2017年6月10時19分10秒タイプの0000リソース(55)(ストリーム) INT(0)文字列(0 ) ""

ライブサーバーではこれを受け取ります。

メッセージ:fsockopenの()://smtp.office365.com: TCPに接続することができません587(接続がタイムアウト)

私はGmailのSMTPを試してみましたが、再びこれはローカルで動作しますが、リモートWebホストではありません。

他にも試してみるべきことはありますか、私のウェブホストに確認を依頼してください。現在私はアイデアがありません。

何か助けていただければ幸いです。

答えて

5

これがあなたのケースではうまくいくかどうかわかりませんが、私は同じ問題があります。それはホームステッドを使用して私のローカル開発で動作しますが、hostgatorでエラーが発生します。私はそれを修正するために何をしましたか、私はプロトコルの価値をメールに変えています。 - 働い

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

アメージング@winnieのdamayo:これに

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

:あなたのコードを変更するには

お試しください!どうもありがとうございました。なぜそれは機能し、私の元の方法はしませんでしたか? Codeigniterの文書によると、 '$ config ['protocol'] = 'smtp''を使用すると言います。私はこのことを数日間試してみました。もう一度感謝します。 –

関連する問題