如何使用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 身份验证错误