0

我正在尝试使用免费在 MAMP 上运行的 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 变量。不用担心这些东西,我已经检查过我的问题不是由于这些。

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_portsendmail_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

您需要使用sendmail详细说明如何在 MAMP 上安装它)。或者您可以使用下面的解决方案将电子邮件存储在本地主机中(类似于模拟电子邮件发送)。我在我的本地主机(XAMPP)上使用这个解决方案。也许它会对你有所帮助。

指定发送邮件的路径php.ini

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

第二步——你可以尝试使用这个脚本

    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 回答