2013-02-04 2 views
2

Наш сайт использует Kohana и php, и мы используем sendgrid для отправки транзакционных писем. С gmail у нас есть тонна проблем со спамом, и мы отправляем только электронные письма с бесплатной подпиской и имеем высокую открытую ставку. Одна из возможных проблем является то, что наши письма, кажется, есть две возвратных-путь в заголовке:Есть ли способ удалить обратный путь, который kohana устанавливает в письмах?

  1. установлен для нас в Kohana
  2. вставляют по sendgrid.

Sendgrid говорит, что когда они отправляют сообщение, они берут на себя этот конверт из-за обращения к управлению отказом. Но мы не можем понять, как Кохана не вставлять это. Какие-либо предложения? ПРИМЕР КОДА: Kohana использует Swift для отправки писем. Как мы их отправляем сейчас, ниже. Мы попытались удалить ответ-ответ через

$message->headers->set('reply-to', ''); 

но он не работает. Забавно, придание ему непустого значения изменяет его, но, похоже, не существует способа полностью избавиться от него.

Полный код для этой функции:

/** 
* Send an email message. 
* 
* @param string|array recipient email (and name), or an array of To, Cc, Bcc names 
* @param string|array sender email (and name) 
* @param string  message subject 
* @param string  message body 
* @param boolean  send email as HTML 
* @param string  Reply To address. Optional, default null, which defaults to From address 
* @return integer  number of emails sent 
*/ 
public static function send($category, $to, $from, $subject, $message, $html = FALSE, $replyto = null) 
{ 
    // Connect to SwiftMailer 
    (email::$mail === NULL) and email::connect(); 

    // Determine the message type 
    $html = ($html === TRUE) ? 'text/html' : 'text/plain'; 

// Append mixpanel tracking pixel to html emails 
if ($html) { 
    $mixpanel_token = FD_DEV_MODE ? "08c59f4e26aa718a1038459af75aa559" : "d863dc1a3a6242dceee1435c0a50e5b7"; 
    $json_array = '{ "event": "e-mail opened", "properties": { "distinct_id": "' . $to . '", "token": "' . $mixpanel_token . '", "time": ' . time() . ', "campaign": "' . $category . '"}}'; 
    $message .= '<img src="http://api.mixpanel.com/track/?data=' . base64_encode($json_array) . '&ip=1&img=1"></img>'; 
} 

    // Create the message 
    $message = new Swift_Message($subject, $message, $html, '8bit', 'utf-8'); 

// Adding header for SendGrid, added by David Murray 
$message->headers->set('X-SMTPAPI', '{"category" : "' . $category . '"}'); 

    if (is_string($to)) 
    { 
     // Single recipient 
     $recipients = new Swift_Address($to); 
    } 
    elseif (is_array($to)) 
    { 
     if (isset($to[0]) AND isset($to[1])) 
     { 
      // Create To: address set 
      $to = array('to' => $to); 
     } 

     // Create a list of recipients 
     $recipients = new Swift_RecipientList; 

     foreach ($to as $method => $set) 
     { 
      if (! in_array($method, array('to', 'cc', 'bcc'))) 
      { 
       // Use To: by default 
       $method = 'to'; 
      } 

      // Create method name 
      $method = 'add'.ucfirst($method); 

      if (is_array($set)) 
      { 
       // Add a recipient with name 
       $recipients->$method($set[0], $set[1]); 
      } 
      else 
      { 
       // Add a recipient without name 
       $recipients->$method($set); 
      } 
     } 
    } 

    if (is_string($from)) 
    { 
     // From without a name 
     $from = new Swift_Address($from); 
    } 
    elseif (is_array($from)) 
    { 
     // From with a name 
     $from = new Swift_Address($from[0], $from[1]); 
    } 

    // Reply To support, not standard in Swift, added by Soham 
    if (!$replyto) $replyto = $from; 

    $message->setReplyTo($replyto); 

    return email::$mail->send($message, $recipients, $from); 
} 
+0

Я предполагаю, что это не имеет ничего общего с Kohana, поскольку grep в общей файловой системе не возвращает никаких «возвратных путей», которые нужно установить. Я предполагаю, что sendgrid каким-то образом по умолчанию возвращает ваш путь возврата к чему-то (потому что sendgrid связан с Kohana?). – Daan

+0

Мы устанавливаем один в Кохане, и Сэддрид устанавливает свои собственные. – user2041208

+0

Можете ли вы опубликовать любой код своей реализации, поскольку sendgrid нелегко доступен – Daan

ответ

1

Это не вопрос Кохана, но больше вопрос SwiftMailer, так как Swiftmailer идет не стандарт с Kohana Framework. Согласно Swiftmailer docs вы можете установить/получить Return-Path явно:

$message->setReturnPath('[email protected]'); 

Hopes это помогает!

+0

, но разве у вас нет пути возврата вообще? Sendgrid устанавливает одно, и они говорят, что это требование, поэтому нам не нужно вставлять его вообще. – user2041208

+1

Я бы экспериментировал с заголовками Swiftmailer: http://swiftmailer.org/docs/headers.html Здесь вы можете прочитать, как установить или, возможно, отключить их. – Daan

0

я просто хочу сказать спасибо за предоставленную решение для меня, косвенно ..

// Adding header for SendGrid, added by David Murray 
$message->headers->set('X-SMTPAPI', '{"category" : "INSERT CATEGORY HERE"}'); 

X-SMTPAPI документация использования с веб-сайта Sendgrid является отстой ..