我正在使用codeigniter框架。使用codeigniter邮件功能发送邮件时,邮件作为垃圾邮件发送,我不知道为什么会发生这种情况,我使用的代码为:
$this->load->library('email');
if($fromname==''){$fromname='MySystem';}
if($from==''){$from='noreply@gmail.com';}
if($reply==''){$reply=$from;}
$config = array(
'protocol' => 'smtp',
'smtp_host' => host,
'smtp_port' => port,
'smtp_crypto' => 'ssl',
'smtp_user' => user_nam,
'smtp_pass' => pwd,
'mailtype' => 'html',
'charset' => 'utf-8',
'wordwrap' => TRUE
);
$this->email->initialize($config);
$this->email->from($from, $fromname);
$this->email->reply_to($reply, $fromname);
foreach($result as $row){
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message1);
$this->email->send();
}
通过使用此代码,邮件将发送给一组用户。这些邮件作为垃圾邮件收到。这是因为代码或服务器问题出现了一些错误吗?
答案 0 :(得分:0)
主要问题可能是您的from
地址。发送电子邮件时,您说发件人是noreply@gmail.com
。收到您的电子邮件后,该服务会查找Gmail的SPF(http://en.wikipedia.org/wiki/Sender_Policy_Framework)DNS记录,以查看发送该电子邮件的服务器(您的服务器)是否是Gmail认为是允许的发件人的服务器,这当然不是。由于该检查失败,电子邮件很可能最终成为垃圾邮件。
解决此问题的方法是将您的from
地址设置为真实域名,例如noreply@yourdomain.com
。然后,您需要设置SPF记录,以便您的服务器是该域的可信发件人。有很多教程可以帮助解决这个问题,但您可以在yourdomain.com上将其用作TXT记录:
v=spf1 ip4:<your server IP> ~all
如果您从yourdomain.com发送来自其他服务(例如Google Apps)的电子邮件,您也会想要为此添加规则。
即使这样,您的电子邮件也不能保证不会受到垃圾邮件的侵扰。如果邮件的内容过于简单且类似垃圾邮件,或者您没有包含取消订阅链接,那么您最终也可能会收到垃圾邮件。
答案 1 :(得分:0)
好的,我通过更改$ config并初始化($ config)
来解决问题$config = array(
'protocol' => 'smtp',
'smtp_host' => $host,
'smtp_port' => $port,
'smtp_crypto' => $crypto,
'smtp_user' => $user_nam,
'smtp_pass' => $pwd,
'mailtype' => 'html',
'charset' => 'utf-8',
'wordwrap' => TRUE,
'smtp_auth' => TRUE
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->initialize($config);