我目前在我的网站上有一个联系表,提交后会发送电子邮件通知。它对我而言是完美的,甚至当我从外部将其发送给朋友作为测试他们正在接受时。
但是,我的客户(法国人)似乎根本收不到这封电子邮件,我也不知道为什么。我需要做些什么来确保他们收到它吗?我以为这是他们的最终目标,但他们绝对坚信这不是问题,这是我的代码有问题。我为他们尝试了不同域的不同电子邮件地址,但还是没有运气!
$this->load->library('parser');
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$this->load->library('email');
$data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'email' => $this->input->post('email'),
'phone' => $this->input->post('phone'),
'message' => $this->input->post('message')
);
$body = $this->parser->parse('html_email', $data, true);
$this->email->from('[email protected]', 'Duparc');
$this->email->to('[email protected]');
$this->email->subject('Test Email');
$this->email->message($body);
$this->email->send();
我认为问题并非源于CodeIgniter。假设邮件没有进入垃圾邮件箱,则您的客户的提供者可能出于其他原因拒绝了您的邮件。我立即想到的一个原因是,您可能试图从不允许的域(例如test.com)发送消息。我的建议是开始尝试将带有其他工具的电子邮件发送给您的法国客户(任何sendmail或postfix客户端工具),并查看他是否收到了。
如果成功,则问题可能出在您的伪造电子邮件(因此,请尝试使用有效的域名)。有时将其完全删除也可以工作(然后可以用外部IP替换它)。
如果不是,则问题出在您的Web服务器的配置中。我在使用postfix时遇到了这个问题,在该问题中,我必须将"General Options" > "What domain to use in outbound mail"
配置选项显式设置为我的域名,以使该服务器被静默关闭我们邮件的反复无常的服务器所接受。
如果没有任何效果,则还可以使用其他邮件服务器来幸运地解决此问题。这是我用来强制使用sendmail的CodeIgniter的代码:
$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$this->email->initialize($config);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句