2012-03-29 8 views
4

Unsere App generiert eine E-Mail, die eine Verknüpfung mit einem Hash-Fragment enthält.Outlook entfernt URL-Hash von E-Mail

  • Wenn ein Outlook 2010 Benutzer die HTML-Link (innerhalb des <a> tag) klickt, wird die URL geöffnet, aber umfasst nicht geheimnisvoll der Hash-Fragment.
  • Wenn der Benutzer auf die einfache URL klickt (die Outlook in einen klickbaren Link konvertiert), wird die vollständige URL korrekt geöffnet. Hier

ist der entsprechende Code aus unserer Rails-Anwendung, wenn das hilft:

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 

E-Mail-Nachricht (abgeschnitten, mit Twitter URLs anstelle von unserer App-URLs, die ein ähnliches Muster folgen):

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> 

Klicken Sie hier öffnet die Twitter-Homepage, während der Klartext "link" Seite Twitter CNN öffnet. Kann mir jemand erklären warum?

+0

Ja, wir haben das gerade in einigen Versionen von Outlook bemerkt. Google hat mich hierher gebracht, also ist es gut zu wissen, dass andere sich auch damit konfrontiert haben. –

Antwort

0

Sie nicht ändern können, wie Outlook die Verbindung behandelt, aber Sie einfach https://twitter.com/cnn und twitter wird dann umleiten zu https://twitter.com/#!/cnn

+0

Ich hätte klarer sein sollen - im Beispiel habe ich die URLs unserer App durch Twitter-URLs ersetzt, da beide dem gleichen Muster folgen und das gleiche Verhalten aufweisen. Wir werden wahrscheinlich unseren serverseitigen Code ändern müssen (glücklicherweise sind es nur ein paar URLs), aber ich habe hier hauptsächlich gepostet, um zu sehen, ob dies ein bekanntes Problem in Outlook ist und ob es einen Workaround gab. –

+0

@MartinGordon das gleiche Problem hier. Haben Sie einen Weg gefunden, Outlook davon abzuhalten, den Hash zu entfernen? – barsh

+1

Das ist wie eine Frage, gibt es eine Möglichkeit, Microsoft an Standards und/oder vernünftigen Erwartungen zu halten. Löse den einen. – tripleee

1

Ja, das Problem zu keinem Zusammenhang ist das, was Back-End verwenden Sie verwenden können. Es scheint, dass (frustrierend) einige Versionen von Outlook den Hash-Teil von URLs streichen.

Meine Lösung war zu E-Mail eine modifizierte Version des Link ohne die Hash- und dann umgeleitet, wo es gehen angenommen hat.

Als ich hatte das gleiche Problem in Laravel + Backbone durchgeführt ich die Umleitung mit diesem Code in routes.php (äquivalent zu routes.rb in Rails):

// 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); 
}); 
0

Vor kurzem hatte ich dieses Problem konfrontiert, wenn ich die URL gesetzt ohne irgendein Protokoll. Später habe ich versucht, das Protokoll der URL hinzuzufügen, und es begann ordnungsgemäß zu funktionieren.

Ich erstellte die Mail-Body-Teil in der JS selbst. Unten ist der ursprüngliche Code.

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

Der Code arbeiten.

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

Ich hoffe, das jemand helfen kann, die die ähnlichen Problem konfrontiert.