0

MAMP free で動作する CI でメールを送信しようとしています。私のスクリプトは無限ループに遭遇し、何も起こっていません.ローカルホストからメールを送信するために特別に何かを設定する必要がありますか?

CI のメール設定は次のとおりです。

    $config = array();
    $config['protocol'] = 'smtp';
    $config['smtp_host'] = 'ssl://smtp.googlemail.com';
    $config['smtp_port'] = 465;
    $config['smtp_user'] = '*****@gmail.com';
    $config['smtp_pass'] = '******';
    $config['mailtype'] = 'html';
    $config['charset']  = 'utf-8';
    $config['newline']  = '\r\n';

乾杯

編集:メールを送信するための私のコードは次のとおりです:

    $config = array();
    $config['protocol'] = 'smtp';
    $config['smtp_host'] = 'ssl://smtp.googlemail.com';
    $config['smtp_port'] = 465;
    $config['smtp_user'] = '****';
    $config['smtp_pass'] = '*****';
    $config['mailtype'] = 'html';
    $config['charset']  = 'utf-8';
    $config['newline']  = '\r\n';

    $this->email->initialize($config);

    $this->email->from('****');
    $this->email->to($email);
    $this->email->subject($title);
    $this->email->message($content);

    $this->email->send();

    error_log($this->email->print_debugger());

私のスクリプトの別の部分で定義された $title、$content、および $email vars を使用します。このようなことは心配しないでください。問題がこれらによるものではないことを確認済みです。

4

2 に答える 2

2

最後に、解決策を見つけました:

MAMP でメールを送信 (mail() PHP 関数)

  1. SSL を設定する: http://soundsplausible.com/2012/01/14/enable-ssl-in-mamp-2-0-5/

  2. Postfix をセットアップします: http://benjaminrojas.net/configuring-postfix-to-send-mail-from-mac-os-x-mountain-lion/

  3. MAMP の php.ini (phpinfo() を見て、どのバージョンが使用されているかを確認し、編集する必要があるフォルダーを確認します) に、コメント行SMTPsmtp_port、およびsendmail_fromを追加します。sendmail_path行のコメントを外し、/usr/sbin/sendmail -t -iを新しい値として設定します。

PostFix が正常に機能する場合は、メールを送信できるはずです (上記のチュートリアルでテストを実行します)。

CI でメールを送信する

CI で電子メールを送信するために、PostFix 用のファイルにログイン情報を書き込む必要はありません。ただし、PostFix と SSL を実行できる必要があります。

Google アカウントの構成ファイルの例を次に示します。

    $config['protocol'] = "smtp";
    $config['smtp_host'] = "smtp.gmail.com";
    $config['smtp_port'] = "587";
    $config['smtp_user'] = "*****";
    $config['smtp_pass'] = "*****";
    $config['smtp_crypto'] = "tls"; //very important line, don't remove it
    $config['smtp_timeout'] = "5"; //google hint
    $config['mailtype'] = "text";
    $config['charset']  = "utf-8";
    $config['newline'] = "\r\n";

必要な " " には注意してください。' ' は問題を引き起こす可能性があります。ここでは、TLS 接続を使用しています。SSL を使用する場合は、ポート 465 を使用し、smtp_crypto 値を正しく修正してください。

于 2013-08-13T09:39:01.130 に答える
1

使用する必要がありますsendmailMAMPにインストールする方法の詳細)。または、以下のソリューションを使用して、電子メールを localhost に保存することもできます (電子メール送信のエミュレートなど)。私は自分のローカルホスト(XAMPP)でこのソリューションを使用しています。多分それはあなたに役立つでしょう。

送信メールのパスを指定php.ini

sendmail_path = "path/to/php path/to/sendmail.php"

2 番目のステップ - このスクリプトの使用を試すことができます

    define('DIR','path/to/sendmail_dir');
    $stream = '';
    $fp = fopen('php://stdin','r');
    while($t = fread($fp,2048)){
        if($t === chr(0)){
            break;
        }
        $stream .= $t;
    }
    fclose($fp);

    $fp = fopen(mkname(),'w');
    fwrite($fp,$stream);
    fclose($fp);

    function mkname($i=0){
       $fn = DIR.date('Y-m-d_H-i-s_').$i.'.eml';
       if (file_exists($fn)){
           return mkname(++$i);
       }   
       else{
           return $fn;
       }
   }
于 2013-08-12T10:50:46.607 に答える