有没有办法删除 kohana 在电子邮件中设置的返回路径?
Posted
技术标签:
【中文标题】有没有办法删除 kohana 在电子邮件中设置的返回路径?【英文标题】:Is there a way to remove the return-path that kohana is setting in emails? 【发布时间】:2013-01-19 18:13:40 【问题描述】:我们的网站使用Kohana
和php
,我们使用sendgrid
发送交易电子邮件。对于gmail
,我们遇到了大量垃圾邮件问题,我们只发送选择加入的电子邮件并且打开率很高。潜在问题之一是我们的电子邮件似乎在标题中有两个返回路径:
-
正在被我们设置在
Kohana
正在由sendgrid
插入。
Sendgrid
表示,当他们发送消息时,为了处理退回管理,他们接管了“信封”。但是我们想不出办法让 Kohana 不插入这个。有什么建议?代码示例:
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);
【问题讨论】:
我猜这与 Kohana 无关,因为整个文件系统上的 grep 不会返回任何要设置的“返回路径”。我的猜测是 sendgrid 以某种方式默认您的返回路径为某些东西(因为 sendgrid 与 Kohana 相关?)。 我们在 Kohana 中设置了一个,而 Sendgrid 正在设置他们自己的。 您能否发布您的实现代码,因为 sendgrid 不容易获得 我看不到您的代码试图设置返回路径的位置。回复和返回路径是不同的。您可以在看到两个标题的地方发布原始电子邮件吗? 尝试删除问题中有关 Kohana 的所有内容。它与问题无关,只会使人们感到困惑。专注于 Swiftmailer。根据解决方案,尝试像 Daan 所说的那样查看原始电子邮件的标题。 【参考方案1】:我只想说谢谢你间接地为我提供了这个解决方案..
// Adding header for SendGrid, added by David Murray
$message->headers->set('X-SMTPAPI', '"category" : "INSERT CATEGORY HERE"');
Sendgrid 网站上的 X-SMTPAPI 使用文档很烂..
【讨论】:
【参考方案2】:这并不是一个真正的 Kohana 问题,而是一个 Swiftmailer 问题,因为 Swiftmailer 不是 Kohana 框架的标准。根据Swiftmailer docs,您可以明确设置/获取返回路径:
$message->setReturnPath('bounces@address.tld');
希望这会有所帮助!
【讨论】:
但是你就不能没有返回路径吗? Sendgrid 设置了一个,他们说这是一个要求,所以我们根本不需要插入一个。 我会尝试使用 Swiftmailer 标头:swiftmailer.org/docs/headers.html 在这里您可以阅读如何设置或取消设置它们。以上是关于有没有办法删除 kohana 在电子邮件中设置的返回路径?的主要内容,如果未能解决你的问题,请参考以下文章
HTML 电子邮件中的表格单元格宽度与 HTML 或 CSS 中设置的宽度不对应
收到响应后,是不是可以选择删除 REST API(RestAssured) 中请求中设置的多部分内容?