我目前在我的网站上有一个联系表格,在提交时会发送电子邮件通知。它完美地完成了我的工作,甚至当我将它作为测试外部发送给朋友时,他们正在接收它。
然而,我的客户,在法国,似乎根本无法接收此电子邮件,我不知道为什么。有什么我需要做的,以确保他们收到它?我认为这是他们的结果,但他们绝对坚持认为它不是,而且这是我的代码的问题。我为不同的域名尝试了不同的电子邮件地址,但仍然没有运气!
$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('test@test.com', 'Duparc');
$this->email->to('test@test.com');
$this->email->subject('Test Email');
$this->email->message($body);
$this->email->send();
答案 0 :(得分:1)
在我看来,问题不是来自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);