在 CodeIgniter 中发送电子邮件
Posted
技术标签:
【中文标题】在 CodeIgniter 中发送电子邮件【英文标题】:Send email in CodeIgniter 【发布时间】:2014-07-13 21:13:05 【问题描述】:我是 CodeIgniter 的新手。我可以知道如何通过 localhost 吗?我应该在smtp_user
和smtp_pass
中输入什么?下面是我的控制器代码:
function Forgot_Password()
$this->form_validation->set_rules('Email', 'Email', 'trim|required|valid_email|callback_email_check');
if ($this->form_validation->run() == FALSE)
$this->load->view('templates/header');
$this->load->view('Forgot_Password');
$this->load->view('templates/footer');
else
$this->load->library('email');
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'xxxxxxxxxx',
'smtp_pass' => 'xxxxxxxxxx'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from('26328@siswa.unimas.my', 'Your Name');
$this->email->to('foo.900.fch@gmail.com');
//$this->email->cc('another@another-example.com');
//$this->email->bcc('them@their-example.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
if($this->email->send())
echo 'Email sent.';
else
show_error($this->email->print_debugger());
在 config.php(配置文件夹)中,我有:
$config['smtp_host'] = 'ssl://smtp.gmail.com'; // SMTP Server Address.
$config['smtp_port'] = '465'; // SMTP Port.
$config['protocol'] ='sendmail';
【问题讨论】:
有什么特别的错误吗? 无法使用 PHP mail() 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。我不知道我应该为 smtp_user 和 smtp_pass 放什么。 你使用的是本地主机吗? 是的。我想向现有帐户发送电子邮件。 您必须安装邮件服务器。 【参考方案1】:ssl
需要 Google 邮件 SMTP
身份验证,因此 open_ssl
应该在您的 php.ini
中启用扩展
Codeigniter 邮件库有关 SSL/TLS 的更多详细信息click here
在 php 中启用 OPEN SSL click here
【讨论】:
ya.分号已被删除但仍无法发送电子邮件。 @Carson 好的,您是否还检查了服务器上的open_ssl
扩展程序?
如何检查我服务器上的 open_ssl 扩展?
@Carson ,我在答案中添加了另一个链接,请检查您的 php.ini
文件
你,检查并启用 open_ssl 但仍然无法发送。【参考方案2】:
您必须在系统中配置 sendmail。
如果您使用的是 ubuntu,请按照以下步骤操作: 如果您想在 Ubuntu-Linux 服务器上使用 Gmail 帐户作为免费的 SMTP 服务器,您会发现这篇文章很有用。本指南使用 Ubuntu 12.04 进行了测试。如果您遇到任何问题,请随时使用下面的 cmets-section。 通过 smtp.gmail.com 中继 Postfix 邮件:
首先,安装所有必要的软件包:
sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
如果您之前没有安装过 postfix,postfix 配置向导会询问您一些问题。只需选择您的服务器作为 Internet 站点,对于 FQDN,请使用 mail.example.com 之类的内容
然后打开你的后缀配置文件:
vim /etc/postfix/main.cf
以及以下几行:
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
您可能已经注意到我们没有在上面的行中指定我们的 Gmail 用户名和密码。他们将进入不同的文件。打开/创建
vim /etc/postfix/sasl_passwd
并添加以下行:
[smtp.gmail.com]:587 USERNAME@gmail.com:PASSWORD
如果您想使用 Google 应用的域名,请将@gmail.com 替换为您的@domain.com
修复权限并更新后缀配置以使用 sasl_passwd 文件:
sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
接下来,验证证书以避免出错。只需运行以下命令:
cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem
最后,重新加载 postfix 配置以使更改生效:
sudo /etc/init.d/postfix reload
测试 检查邮件是否通过 Gmail SMTP 服务器发送
如果您已正确配置所有内容,以下命令应该会从您的服务器生成一封测试邮件到您的邮箱。
echo "Test mail from postfix" | mail -s "Test Postfix" you@example.com
更多详情:https://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/
感谢 rtcamp.com,它对我帮助很大:-)
【讨论】:
以上是关于在 CodeIgniter 中发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
无法在Codeigniter中发送电子邮件,没有错误消息。本地或远程