Re: problem with mailto-links

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le 27-nov.-07 à 13:01, Paul Lesniewski a écrit :

> On Nov 27, 2007 3:27 AM, Paul Lesniewski <paul@xxxxxxxxxxxxxxxx>  
> wrote:
>>
>> On Nov 27, 2007 2:46 AM, Paul Lesniewski <paul@xxxxxxxxxxxxxxxx>  
>> wrote:
>>>
>>> On Nov 27, 2007 1:24 AM, Pascal Maes <pascal.maes@xxxxxxxxxxxxxx>  
>>> wrote:
>>>>
>>>> Le 27-nov.-07 à 02:59, Paul Lesniewski a écrit :
>>>>
>>>>
>>>>> On Nov 9, 2007 12:14 AM, Pascal Maes <pascal.maes@xxxxxxxxxxxxxx>
>>>>> wrote:
>>>>>>
>>>>>> Le 15 janv. 07 à 06:31, Jonathan Angliss a écrit :
>>>>>>
>>>>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>>>> Hash: SHA1
>>>>>>>
>>>>>>> Hi Pål,
>>>>>>> On Monday, December 25, 2006, Pål wrote:
>>>>>>>> I have a helpdesk system which sends out mail. Some of the mail
>>>>>>>> contains a mailto link like this one:
>>>>>>>
>>>>>>>> For status on your request, click the link below:
>>>>>>>> mailto:helpdesk@xxxxxxxxxxxx?subject=Status&body=52667668
>>>>>>>
>>>>>>>> Squirrelmail will not make the link correct, as only
>>>>>>>> helpdesk@xxxxxxxxxxxx is recognised and not the subject info.  
>>>>>>>> When
>>>>>>>> the reader clicks the link the address helpdesk@xxxxxxxxxxxx  
>>>>>>>> is put
>>>>>>>> in the TO-field, but the subject is missing.
>>>>>>>
>>>>>>>> Anyone who knows how to fix this?
>>>>>>>
>>>>>>>> Running SM 1.4.4.1
>>>>>>>
>>>>>>>> I guess the helpdesk system is badly written as it expects  
>>>>>>>> mail to
>>>>>>>> be read in Outlook, and not web mail readers like SM.
>>>>>>>
>>>>>>> I believe the specs say that subject, is allowed, not sure on  
>>>>>>> body
>>>>>>> though.  If you upgrade to 1.4.9a, and try again, this should
>>>>>>> work, at
>>>>>>> least the subject.  An upgrade should be in order anyway as  
>>>>>>> 1.4.4 is
>>>>>>> known to have security issues.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> I have the same problem with version 1.4.11
>>>>>
>>>>> Thanks for the report.  The mailto: functionality was in fact  
>>>>> broken
>>>>> again.  I just fixed it in 1.4.12 and 1.5.2.  You might wait a  
>>>>> day and
>>>>> then get a snapshot download of 1.4.12 and it should work  
>>>>> again.  The
>>>>> instructions on how to make mailto: links work are also updated  
>>>>> and
>>>>> hopefully more helpful.  See the contrib directory in the  
>>>>> SquirrelMail
>>>>> package or this:
>>>>>
>>>>> http://squirrelmail.org/wiki/WindowsMailto
>>>>>
>>>>> If you continue to experience problems, please let us know.
>>>>
>>>>
>>>>
>>>> I have downloaded the version 1.4.12 [SVN] (Checked out revision
>>>> 12786.) but the problem remains.
>>>> See the picture in attachment.
>>>>
>>>> I'm afraid that the problem is not realy related to <http://squirrelmail.org/wiki/WindowsMailto
>>>>> .
>>>> It's interesting to know that we can jump directly to  
>>>> SquirrelMail by
>>>> clicking on a mailto link on a web page, but the problem here is  
>>>> that
>>>> the mailto link is broken in SquirreMail and because of that if we
>>>> click onto the link, we don't get what we want.
>>>> In the case of the picture, clicking on the first mailto link,  
>>>> open a
>>>> compose page whith the recipient but not the subject.
>>>
>>> Looks to me like you are viewing a message in plain text.  In such a
>>> format, you will never get more than the email address being
>>> highlighted.  If you want a mailto: link to be clickable, you need  
>>> to
>>> have a mail sent in HTML format, and make sure you are viewing it in
>>> HTML format yourself.  However, currently, that seems to be broken
>>> too.
>>
>> This is now fixed (patch also included below), however, the link is
>> currently displayed as a mailto: link instead of a link to the SM
>> compose screen.  I will look at fixing that later.  If anyone else  
>> can
>> look at it and create a patch, contributions always welcome.
>
> This is now fixed as well.  Patch is below (you still need to apply
> the one here that is quoted from my previous email on this thread)
>
> ===================================================================
>> --- branches/SM-1_4-STABLE/squirrelmail/functions/mime.php
>> 2007-11-27 09:12:05 UTC (rev 12787)
>> +++ branches/SM-1_4-STABLE/squirrelmail/functions/mime.php
>> 2007-11-27 11:20:55 UTC (rev 12788)
>> @@ -1704,6 +1704,7 @@
>>           $aUrl = parse_url($attvalue);
>>           if (isset($aUrl['scheme'])) {
>>               switch(strtolower($aUrl['scheme'])) {
>> +                    case 'mailto':
>>                   case 'http':
>>                   case 'https':
>>                   case 'ftp':
>>
>
>
>
>
> Index: functions/mime.php
> ===================================================================
> --- functions/mime.php  (revision 12788)
> +++ functions/mime.php  (working copy)
> @@ -2181,9 +2181,15 @@
> *
> * @param  $body  the body of the message
> * @param  $id    the id of the message
> + * @param  boolean $take_mailto_links When TRUE, converts mailto:  
> links
> + *                                    into internal SM compose links
> + *                                    (optional; default = TRUE)
> * @return        a string with html safe to display in the browser.
> */
> -function magicHTML($body, $id, $message, $mailbox = 'INBOX') {
> +function magicHTML($body, $id, $message, $mailbox = 'INBOX',
> $take_mailto_links =true) {
> +
> +    // require_once(SM_PATH . 'functions/url_parser.php');  // for
> $MailTo_PReg_Match
> +
>    global $attachment_common_show_images, $view_unsafe_images,
>           $has_unsafe_images;
>    /**
> @@ -2335,6 +2341,59 @@
>    if (strpos($trusted,$secremoveimg)){
>        $has_unsafe_images = true;
>    }
> +
> +    // we want to parse mailto's in HTML output, change to SM  
> compose links
> +    // this is a modified version of code from url_parser.php...  
> but Marc is
> +    // right: we need a better filtering implementation; adding  
> this randomly
> +    // here is not a great solution
> +    //
> +    if ($take_mailto_links) {
> +        // parseUrl($trusted);   // this even parses URLs inside of
> tags... too aggressive
> +        global $MailTo_PReg_Match;
> +        $MailTo_PReg_Match = '/mailto:' .  
> substr($MailTo_PReg_Match, 1) ;
> +        if ((preg_match_all($MailTo_PReg_Match, $trusted, $regs)) &&
> ($regs[0][0] != '')) {
> +            foreach ($regs[0] as $i => $mailto_before) {
> +                $mailto_params = $regs[10][$i];
> +                // get rid of any tailing quote since we have to add
> send_to to the end
> +                //
> +                if (substr($mailto_before, strlen($mailto_before) -  
> 1) == '"')
> +                    $mailto_before = substr($mailto_before, 0,
> strlen($mailto_before) - 1);
> +                if (substr($mailto_params, strlen($mailto_params) -  
> 1) == '"')
> +                    $mailto_params = substr($mailto_params, 0,
> strlen($mailto_params) - 1);
> +
> +                if ($regs[1][$i]) {    //if there is an email addr
> before '?', we need to merge it with the params
> +                    $to = 'to=' . $regs[1][$i];
> +                    if (strpos($mailto_params, 'to=') > -1)
> //already a 'to='
> +                        $mailto_params = str_replace('to=', $to .
> '%2C%20', $mailto_params);
> +                    else {
> +                        if ($mailto_params)    //already some params,
> append to them
> +                            $mailto_params .= '&amp;' . $to;
> +                        else
> +                            $mailto_params .= '?' . $to;
> +                    }
> +                }
> +
> +                $url_str = preg_replace(array('/to=/i',
> '/(?<!b)cc=/i', '/bcc=/i'), array('send_to=', 'send_to_cc=',
> 'send_to_bcc='), $mailto_params);
> +
> +                // we'll already have target=_blank, no need to allow
> comp_in_new
> +                // here (which would be a lot more work anyway)
> +                //
> +                global $compose_new_win;
> +                $temp_comp_in_new = $compose_new_win;
> +                $compose_new_win = 0;
> +                $comp_uri = makeComposeLink('src/compose.php' .
> $url_str, $mailto_before);
> +                $compose_new_win = $temp_comp_in_new;
> +
> +                // remove <a href=" and anything after the next  
> quote (we only
> +                // need the uri, not the link HTML) in compose uri
> +                //
> +                $comp_uri = substr($comp_uri, 9);
> +                $comp_uri = substr($comp_uri, 0, strpos($comp_uri,  
> '"', 1));
> +                $trusted = str_replace($mailto_before, $comp_uri,  
> $trusted);
> +            }
> +        }
> +    }
> +
>    return $trusted;
> }
>
> Index: functions/url_parser.php
> ===================================================================
> --- functions/url_parser.php    (revision 12767)
> +++ functions/url_parser.php    (working copy)
> @@ -37,6 +37,15 @@
> $Email_RegExp_Match = '[0-9a-z]([-_.+]?[0-9a-z])*(%' .  
> $Host_RegExp_Match .
>    ')?@' . $Host_RegExp_Match;
>
> +/**
> + * rfc 2368 (mailto URL) preg_match() regexp
> + * @link http://www.ietf.org/rfc/rfc2368.txt
> + * @global string MailTo_PReg_Match the encapsulated regexp for  
> preg_match()
> + */
> +global $MailTo_PReg_Match;
> +$Mailto_Email_RegExp = '[0-9a-z%]([-_.+%]?[0-9a-z])*(%' .
> $Host_RegExp_Match . ')?@' . $Host_RegExp_Match;
> +$MailTo_PReg_Match = '/((?:' . $Mailto_Email_RegExp .
> ')*)((?:\?(?:to|cc|bcc|subject|body)=[^\s\?&=,()]+)?(?:&amp;(?:to|cc| 
> bcc|subject|body)=[^\s\?&=,()]+)*)/i';
> +
> function parseEmail (&$body) {
>    global $color, $Email_RegExp_Match, $compose_new_win;
>    $sbody     = $body;



hello,

I have change my configuration to view the messages in HTML by default.
The modifications of the files mime.php and url_parser.php has been  
done.
I have sent an email with the body :


To see :

<mailto:sympa@xxxxxxxxxxxxxxxxxxx?subject=TEST%20bac3.fsa>


--
Pascal


In squirrelmail, I get

<pre>


To see :
&lt;mailto:<a href="/1.4.12/src/compose.php?send_to=sympa 
%40listes.uclouvain.be">sympa@xxxxxxxxxxxxxxxxxxx</a>?subject=TEST 
%20bac3.fsa&gt;


-- Pascal

</pre>



--
Pascal




-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
-----
squirrelmail-users mailing list
Posting guidelines: http://squirrelmail.org/postingguidelines
List address: squirrelmail-users@xxxxxxxxxxxxxxxxxxxxx
List archives: http://news.gmane.org/gmane.mail.squirrelmail.user
List info (subscribe/unsubscribe/change options): https://lists.sourceforge.net/lists/listinfo/squirrelmail-users


[Index of Archives]     [Video For Linux]     [Yosemite News]     [Yosemite Photos]     [gtk]     [KDE]     [Cyrus SASL]     [Gimp on Windows]     [Steve's Art]     [Webcams]

  Powered by Linux