Есть ли способ удалить обратный путь, который kohana устанавливает в электронных письмах?
Наш сайт использует Kohana
а также php
и мы используем sendgrid
отправлять транзакционные электронные письма. С gmail
у нас масса спамовых проблем, и мы отправляем только подписку по электронной почте, и у нас высокий уровень открытия. Одна из потенциальных проблем заключается в том, что в наших электронных письмах, по-видимому, есть два пути возврата в заголовке:
- Устанавливается нами в
Kohana
- вставляется
sendgrid
,
Sendgrid
говорит, что когда они отправляют сообщение, они берут этот "конверт из" ради управления Bounce. Но мы не можем найти способ, чтобы Кохана не вставила это. Какие-либо предложения? ПРИМЕР КОДА:
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);
}
2 ответа
Это на самом деле не вопрос о Kohana, а скорее вопрос о Swiftmailer, поскольку Swiftmailer не входит в стандартную комплектацию Kohana Framework. Согласно документации Swiftmailer вы можете установить / получить Return-Path явно:
$message->setReturnPath('bounces@address.tld');
Надеется, что это помогает!
Я просто хочу сказать спасибо за то, что вы предоставили мне это решение, косвенно..
// Adding header for SendGrid, added by David Murray
$message->headers->set('X-SMTPAPI', '{"category" : "INSERT CATEGORY HERE"}');
Документация по использованию X-SMTPAPI с сайта Sendgrid - отстой.