1

我目前在我的网站上有一个联系表格,在提交时会发送电子邮件通知。它在我的终端上运行良好,即使我将它作为测试发送给外部朋友,他们也会收到它。

然而,我在法国的客户似乎根本收不到这封电子邮件,我也不知道为什么。我需要做些什么来确保他们收到吗?我认为这是他们的问题,但他们绝对坚持认为不是,这是我的代码的问题。我已经为他们使用不同的域尝试了不同的电子邮件地址,但仍然没有运气!

$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();
4

1 回答 1

1

在我看来,问题并非源于 CodeIgniter。假设邮件没有进入垃圾邮件箱,您的客户的提供商可能会出于其他原因拒绝您的邮件。我可以立即想到的一个原因是您可能正试图从不允许您发送的域(例如 test.com)发送消息。我的建议是开始尝试使用其他工具向您的法国客户(任何 sendmail 或 postfix 客户端工具)发送电子邮件,并查看他是否收到。

如果成功,那么问题可能来自您的伪造电子邮件(因此请尝试使用有效的域名)。有时也可以完全删除它(它可能会被外部 IP 替换)。

如果不是,那么问题来自您的 Web 服务器的配置。我在使用后缀时遇到了这个问题,我必须明确地将"General Options" > "What domain to use in outbound mail"配置选项设置为我的域名,以便被反复无常的服务器接受,该服务器默默地关闭了我们的邮件。

如果没有任何工作,您也可以使用另一个邮件服务器,这可能会幸运地解决问题。这是我用来强制 CodeIgniter 使用 sendmail 的代码:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$this->email->initialize($config);
于 2013-09-30T09:57:02.073 回答