Outlook从电子邮件中删除URL哈希

时间:2012-03-29 21:01:26

标签: email outlook outlook-2010

我们的应用会生成一封电子邮件,其中包含带有哈希片段的链接。

  • 当Outlook 2010用户单击HTML链接(在<a>标记内)时,URL会被打开,但神秘地排除哈希片段。
  • 如果用户单击纯URL(Outlook转换为可点击的链接),则会正确打开完整的URL。

以下是我们的Rails应用程序中的相关代码,如果有帮助:

mail(from: @message.from, to: @message.to, cc: @message.cc, bcc: @message.bcc, subject: @message.subject) do |format|
  format.html { render text: @message.body_text }
end

电子邮件消息(截断;使用Twitter网址代替我们的应用网址,遵循类似的模式):

Subject: Hello
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content='text/html; charset=utf-8' http-equiv='content-type'>
    <title>title</title>
  </head>
  <body>
    <table id='message_body_template'>
      <tr>
        <td>
          <p><a href="http://twitter.com/#!/cnn" title="" target="">Click here</a> 
             to learn more.</p>
          <p>Plain text link: http://twitter.com/#!/cnn</p>
        </td>
      </tr>
    </table>
  </body>
</html>

点击此处打开Twitter主页,而纯文本“链接”打开CNN的Twitter页面。任何人都可以解释原因吗?

3 个答案:

答案 0 :(得分:1)

是的,问题与您使用的后端无关。 (令人沮丧的是)某些版本的Outlook会删除URL的哈希部分。

我的解决方案是通过电子邮件发送链接的修改版本而不使用哈希,然后将其重定向到应该去的地方

当我在Laravel + Backbone中遇到同样的问题时,我在routes.php中使用此代码执行了重定向(相当于Rails中的routes.rb):

// Redirect /password-reset/XYZ to #/password-reset/XYZ
Route::get('/password-reset/{any}', function() {
    $url = Request::url();         // Get full URL
    $path = Request::path();       // Get portion of URL after the domain name
    return Redirect::to(str_replace($path, "#", $url) . $path);
});

答案 1 :(得分:0)

您将无法更改Outlook处理链接的方式,但您只需使用https://twitter.com/cnn,然后Twitter就会重定向到https://twitter.com/#!/cnn

答案 2 :(得分:0)

最近,当我设置没有任何协议的URL时,我遇到了这个问题。后来我尝试将协议添加到URL中,它开始正常工作。

我正在JS本身创建邮件正文部分。以下是初始代码。

var link = window.location.host+'/#/somepage';

工作代码。

var link = window.location.protocol + '//' + window.location.host+'/#/somepage';

我希望这可以帮助那些面临类似问题的人。