有没有办法删除 kohana 在电子邮件中设置的返回路径?

Posted

技术标签:

【中文标题】有没有办法删除 kohana 在电子邮件中设置的返回路径?【英文标题】:Is there a way to remove the return-path that kohana is setting in emails? 【发布时间】:2013-01-19 18:13:40 【问题描述】:

我们的网站使用Kohanaphp,我们使用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 中设置的宽度不对应

访问前端代码中express.js中设置的标头

收到响应后,是不是可以选择删除 REST API(RestAssured) 中请求中设置的多部分内容?

无法从 Spring Boot 应用程序中设置的 DBRef 中删除

有没有办法不使用 Kohana 中的子模型覆盖整个属性?