根据最新的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();