如何使用codeigniter从本地主机发送电子邮件?

Posted

技术标签:

【中文标题】如何使用codeigniter从本地主机发送电子邮件?【英文标题】:how to send email from localhost using codeigniter? 【发布时间】:2015-08-22 11:57:03 【问题描述】:

    function sendMail() 

  $config = Array(
  'protocol' => 'smtp',
  'smtp_host' => 'ssl://smtp.googlemail.com',
  'smtp_port' => 465,
  'smtp_user' => 'xxx@gmail.com', 
  'smtp_pass' => 'xxx', 
  'mailtype' => 'html',
  'charset' => 'iso-8859-1',
  'wordwrap' => TRUE
);

        $message = 'test';
        $this->load->library('email', $config);
      $this->email->set_newline("\r\n");
      $this->email->from('xxx@gmail.com');
      $this->email->to('xyz@gmail.com');
      $this->email->subject('testing');
      $this->email->message($message);
      if($this->email->send())
     
      echo 'Email sent.';    
     
     else
    
     show_error($this->email->print_debugger());  
    

这是我的代码,我正在尝试使用 codeigniter 从本地主机发送电子邮件,我收到消息“已发送电子邮件”。但我在gmail帐户中没有收到任何邮件。

【问题讨论】:

你查过垃圾邮件吗??? 如果您使用带有 wamp 或 xampp 的 windows,请确保在 localhost 中设置您的邮件设置 这是一个视频教程youtube.com/watch?v=TO7MfDcM-Ho 你设置邮件服务器了吗? 你应该允许lesssecureapps能够登录到你的电子邮件然后使用smtp服务器试试这个google.com/settings/security/lesssecureapps 有效吗?还是运行出错?? 【参考方案1】:
 $config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'xxx@gmail.com',// your mail name
'smtp_pass' => '*****',
'mailtype'  => 'html', 
'charset'   => 'iso-8859-1',
 'wordwrap' => TRUE
);

然后

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

XAMPP 中的邮件设置(Impotent)

$this->email->from('mygmail@gmail.com', 'myname');//your mail address and name
$this->email->to('target@gmail.com'); //receiver mail

$this->email->subject('testing');
$this->email->message($message);

$this->email->send(); //sending mail

sendmail.ini中的配置

路径c:\xampp\sendmail\sendmail.ini

配置

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=myemail@gmail.com
auth_password=yourgmailpassword
force_sender=myemail@gmail.com

php.ini

路径c:\xampp\xampp\php\php.ini

[mail function]
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

【讨论】:

我找到了这篇文章,它演示了如何使用 SMTP 在 CodeIgniter 应用程序中发送电子邮件。 cloudways.com/blog/send-email-codeigniter-smtp【参考方案2】:

我看到您缺少$this->email->initialize($config); 还要确保您已在本地主机上设置了电子邮件设置,否则将无法正常工作。

还有$config = Array(改成$config = array(

替换谷歌邮箱“gmail”

'smtp_host' => 'ssl://smtp.googlemail.com'

'smtp_host' => 'ssl://smtp.gmail.com'

代码

function send_mail() 

$config = array(
  'protocol' => 'smtp',
  'smtp_host' => 'ssl://smtp.gmail.com',
  'smtp_port' => 465,
  'smtp_user' => 'xxx@gmail.com', 
  'smtp_pass' => 'xxx', 
  'mailtype' => 'html',
  'charset' => 'iso-8859-1',
  'wordwrap' => TRUE
);


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

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

$this->email->from('xxx@gmail.com');
$this->email->to('xyz@gmail.com');
$this->email->subject('testing');

$message = 'test';
$this->email->message($message);

if($this->email->send()) 
  echo 'Email sent.';    
 else 
  print_r($this->email->print_debugger());  



【讨论】:

【参考方案3】:

您应该无法在本地发送电子邮件。该方法可以在测试服务器上进行测试..

【讨论】:

这应该是评论而不是回答。 先生,我提到了上面的答案 合并两个答案。【参考方案4】:
    $CI =& get_instance();
    $CI->load->library('email');
    $CI->email->initialize(get_email_config());

    $CI->email->from($data['email_from'],WEBSITE_TITLE); // Constant is define which exist email
    $CI->email->to($data['email_to']);
    if(isset($data['bcc']) && !empty($data['bcc']))
        $CI->email->bcc($data['bcc']);
    else
        $CI->email->bcc('other_email');
    
    if(isset($data['upload'])&& !empty($data['upload']))
        $CI->email->attach($data['upload']);
    
    $CI->email->subject($data['subject']);
    $CI->email->message($data['body']);
    $CI->email->send(TRUE);

【讨论】:

这将允许您在密件抄送中发送电子邮件,也将共享附件。

以上是关于如何使用codeigniter从本地主机发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 codeigniter 中从 gmail 发送电子邮件,SMTP 身份验证错误

如何使用 phpmailer 从本地主机发送电子邮件?

如何正确地从本地主机发送电子邮件 [关闭]

如何使用带有 XAMPP 的 PHP 从本地主机发送电子邮件?

电子邮件 Codeigniter 不工作

如何更正使用 codeigniter 发送电子邮件的方式