邮件不是用PHP发送的

时间:2014-02-09 08:08:20

标签: php codeigniter email

我已经按照一个教程从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()发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。

User-Agent: CodeIgniter
     Date: Sun, 9 Feb 2014 14:58:44 +0530
     From: "invoice" 
     Return-Path: 
     Reply-To: "app123testing@gmail.com" 
     X-Sender: app123testing@gmail.com
     X-Mailer: CodeIgniter
     X-Priority: 3 (Normal)
     Message-ID: <52f74a4c41e32@gmail.com>
     Mime-Version: 1.0
     Content-Type: multipart/alternative; boundary="B_ALT_52f74a4c41e88"
      =?utf-8?Q?Invoice?=
      This is a multi-part message in MIME format.
      Your email application may not support this format.
     --B_ALT_52f74a4c41e88
     Content-Type: text/plain; charset=utf-8
     Content-Transfer-Encoding: 8bit
     Test
     --B_ALT_52f74a4c41e88
     Content-Type: text/html; charset=utf-8
     Content-Transfer-Encoding: quoted-printable
    Test
    --B_ALT_52f74a4c41e88--

4 个答案:

答案 0 :(得分:5)

由于我们在评论中找到了您的问题的答案,所以写一个答案似乎是明智的。

问题是您的电子邮件配置数组($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);

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

编辑:

按照杰斯曼的建议,我决定深入挖掘一下。您可能需要查看此https://stackoverflow.com/a/17274496/2788532

编辑#2:

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

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

答案 1 :(得分:1)

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

someExe --argument 2>$null

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

答案 2 :(得分:1)

你可以试试这个

  1. Open system / libraries / email.php

  2. 修改

    var $ newline =“\ n”; var $ crlf =“\ n”;

    var $ newline =“\ r \ n”; var $ crlf =“\ r \ n”;

答案 3 :(得分:0)

进行类似的更改

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