CodeIgniter电子邮件来自必需-任何方式都使用服务器默认值user@host.myservername.com.


CodeIgniter Email from required - any way use server default user@host.myservername.com

根据最新的DMARC限制,我们在使用codeigniter从提交表单的用户发送邮件或从gmail/yahoo等(任何第三方非服务器电子邮件地址)发送邮件时遇到了问题。

显然,解决方案是将表单设置为从me@mydomain.com(其中mydomain.com是服务器上的域),但是,根据此自定义CMS的当前配置/使用,必须动态定义此电子邮件。

在代码点火器框架内,是否可以允许FROM默认为服务器发送邮件(IE类似user@host.myservername.com)?

我试着从空白处离开并将其完全删除,不是在库中,而是在一个简单的表单处理程序函数中,但没有成功。

对此有任何想法,不胜感激!

编辑:代码段

    public function send_form($id)
{
    log_message('error', 'id - ' . $id);
        $this->load->library('email');
        $emailMsg = '';
        $fromEmail='';
        foreach($this->input->post() as $key => $value)
        {
        //gets values etc 
            }

        $domainEmail=$query->get_send;
   $this->email->to($domainEmail);
            $this->email->from($domainEmail);

            $this->email->reply_to($fromEmail);

        $this->email->subject('Contact Form');
        $this->email->message($emailMsg);

        if ($this->email->send())
        {
        $didSend=true;
        }
    if ($didSend != true)
        {
            echo 'email send failed';
        }
}

对于我必须注释掉代码的每一个,都会获得$fromEmail(这是表单提交者的电子邮件)。域电子邮件是动态的(用户可以填写),并且当前设置为发送电子邮件的位置以及电子邮件的来源。我希望看到to保持动态,然后从服务器默认FROM。我希望这是有道理的。我知道如果你做了一个"格式错误"的php邮件头/从它默认为服务器用户电子邮件,但希望有一个代码点火器解决方案。

谢谢你的帮助!

此解决方案可能会有所帮助。

在加载电子邮件库后立即设置配置。

$this->email->initialize('email_noreply');

并删除表单属性

$this->email->from

测试CI版本:2.1.3

试试这个,宾果

                            $message = 'you message;
                            $email = $email;
                            $this->load->library('email');
                            $config['mailtype'] = 'html';
                            $config['smtp_port']='465';
                            $config['smtp_timeout']='30';
                            $config['charset']='utf-8';
                            $config['protocol'] = 'smtp';
                            $config['mailpath'] = '/usr/sbin/sendmail';
                            $config['charset'] = 'iso-8859-1';
                            $config['wordwrap'] = TRUE;
                            $this->email->initialize($config);
                            $this->email->set_mailtype("html");
                            $subject = 'you subject';
                            $this->email->from('noreply@noreply.com');
                            $this->email->to($email);
                            $this->email->subject($subject);
                            $this->email->message('Testing the email class.'); 
                            // Email Data
                            $c_items = '';
                            mail($email,"My subject",$message);
                            // Sending Email
                            $this->email->message($message);
                           $this->email->send();