Я использую frameworkignign framework. При отправке писем с использованием почтовых функций codeigniter почта поставляется как спам, я не знаю, почему это происходит, я использую код как:
$this->load->library('email');
if($fromname==''){$fromname='MySystem';}
if($from==''){$from='[email protected]';}
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();
}
Используя этот код, почта отправляется группе пользователей. Эти письма принимаются в виде спам-писем. Это из-за некоторой ошибки в коде или проблема с сервером?
Основная проблема, скорее всего, from
вашего адреса. При отправке электронной почты вы говорите, что отправитель [email protected]
. Когда ваша электронная почта будет получена, служба будет искать DNS-запись Gmail SPF (http://en.wikipedia.org/wiki/Sender_Policy_Framework), чтобы узнать, является ли сервер, отправивший электронное письмо (ваш сервер) сервером, который Gmail говорит, разрешенному отправителю, которого, конечно же, нет. Поскольку эта проверка не удалась, письмо, скорее всего, попадет в спам.
Способ исправить это установить ваш from
адреса реального домена, например [email protected]
. Затем вам нужно установить запись SPF, чтобы ваш сервер был доверенным отправителем для этого домена. Есть куча учебников, чтобы помочь с этим, но вы могли бы просто использовать это как запись TXT на yourdomain.com:
v=spf1 ip4:<your server IP> ~all
Если вы отправляете электронное письмо с сайта yourdomain.com из других сервисов (например, Google Apps), вы также захотите добавить правила для этого.
Даже при этом ваши письма не гарантируются, чтобы не спамить. Если содержание сообщений является упрощенным и спам-подобным, или если вы не включаете ссылку для отмены подписки, вы также можете оказаться в спаме.
Хорошо, я получил это нормально, изменив $ config и initialize ($ 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);