【问题标题】:Mail is not sending in php邮件未在 php 中发送
【发布时间】:2014-03-06 13:53:57
【问题描述】:

我已经按照一个教程从 php 发送邮件。

 public function send_credentials($beneficiary_user){

  $this->load->library(‘email’);
  $email_config = Array(
        'protocol'  => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => '465',
        'smtp_user' => 'app123testing@gmail.com',
        'smtp_pass' => 'apptesting',
        'mailtype'  => 'html',
        'starttls'  => true,
        'newline'   => "\r\n"
    );
    $this->email->from('app123testing@gmail.com', 'invoice');
    $this->email->to('anilapu@navaratan.com');
    $this->email->subject('Invoice');
    $this->email->message('Test');

    $this->email->send();

}

我必须做哪些其他设置才能使其正常工作 *运行后 echo $this->email->print_debugger();.我得到了*

无法使用 PHP mail() 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。

用户代理:CodeIgniter
     日期:2014 年 2 月 9 日星期日 14:58:44 +0530
     来自:“发票”
     返回路径:
     回复:“app123testing@gmail.com”
     X 发件人:app123testing@gmail.com
     X-Mailer: CodeIgniter
     X 优先级:3(正常)
     消息 ID:
     哑剧版:1.0
     内容类型:多部分/替代;边界="B_ALT_52f74a4c41e88"
      =?utf-8?Q?发票?=
      这是 MIME 格式的多部分消息。
      您的电子邮件应用程序可能不支持这种格式。
     --B_ALT_52f74a4c41e88
     内容类型:文本/纯文本;字符集=utf-8
     内容传输编码:8bit
     测试
     --B_ALT_52f74a4c41e88
     内容类型:文本/html;字符集=utf-8
     内容传输编码:quoted-printable
    测试
    --B_ALT_52f74a4c41e88--

【问题讨论】:

  • 你能描述你得到的错误吗,无论是在控制台还是在你的错误日志中
  • 你没有对你的 $email_config 数组做任何事情。你应该在实例化它时将它传递给电子邮件库。
  • 调用$this->email->initialize($config);来初始化你设置的配置变量,或者在构造函数中传递它也可以$this->load->library('email', $config);
  • 好收获@RainFromHeaven。完全错过了。
  • 尝试发送电子邮件后,运行以下代码:echo $this->email->print_debugger() 并告诉我们它返回的内容。

标签: php codeigniter email


【解决方案1】:

由于我们在 cmets 中找到了您问题的答案,因此写下答案似乎是谨慎的。

问题是您没有对电子邮件配置数组 ($email_config) 做任何事情。虽然您可能在那里定义了正确的设置,也可能没有,但它们没有任何意义,因为它们没有被正确使用。

因此,至少,您必须更改代码以反映以下更改:

$email_config = Array(
    'protocol'  => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => '465',
    'smtp_user' => 'app123testing@gmail.com',
    'smtp_pass' => 'apptesting',
    'mailtype'  => 'html',
    'starttls'  => true,
    'newline'   => "\r\n"
);

$this->load->library('email', $email_config);

请注意,这只会解决您的方法的问题,我无法验证您的设置/访问凭据的可信度。

编辑:

根据 jtheman 的建议,我决定深入挖掘。你可能想看看这个https://stackoverflow.com/a/17274496/2788532

编辑#2:

您可以使用以下代码从 CI 的电子邮件类中获取有用的错误消息(当然是在您尝试发送电子邮件之后):

<?php echo $this->email->print_debugger(); ?>

【讨论】:

  • 正确!其他方法可能是:1. 尝试 smtp.gmail.com,2. 端口 587,3. 检查您的防火墙等
  • 我已经试过了。但我不知道我在哪里犯错
  • 我必须把它放在哪里。因为当我把它放在 send_credentials 中时,它会禁用剩余代码@RainFromHeaven
  • 你能看到 echo $this->email->print_debugger(); 的结果吗?我已经添加到我的问题@RainFromHeaven
  • 我在受益人控制器中定义了 send_credentials。我使用了 email.php
【解决方案2】:

只需在您编写发送电子邮件代码的函数开头添加此代码

$config = Array(
          'protocol' => 'sendmail',
          'mailtype' => 'html', 
          'charset' => 'utf-8',
          'wordwrap' => TRUE

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

电子邮件将转发,但错误将显示相同的错误

【讨论】:

    【解决方案3】:

    你可以试试这个

    1. 打开系统/库/email.php

    2. 编辑

      var $newline = "\n"; var $crlf = "\n";

      var $newline = "\r\n"; var $crlf = "\r\n";

    【讨论】:

      【解决方案4】:

      进行这样的更改

      'smtp_crypto'=>'ssl', //add this one
       'protocol' => 'smtp',
       'smtp_host' => 'smtp.gmail.com',
       'smtp_port' => 465,
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 2012-09-12
        • 2018-05-08
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多