1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

function.mailto.php

Discussion in 'PHP' started by rheahold, Mar 28, 2013.

  1. #1
    So i have this file in a certain script, i need help getting the bcc option to work, just cant figure it out.

    <?php
    /**
    * Smarty plugin
    * @package Smarty
    * @subpackage plugins
    */
     
     
    /**
    * Smarty {mailto} function plugin
    *
    * Type:    function<br>
    * Name:    mailto<br>
    * Date:    May 21, 2002
    * Purpose:  automate mailto address link creation, and optionally
    *          encode them.<br>
    * Input:<br>
    *        - address = e-mail address
    *        - text = (optional) text to display, default is address
    *        - encode = (optional) can be one of:
    *                * none : no encoding (default)
    *                * javascript : encode with javascript
    *                * hex : encode with hexidecimal (no javascript)
    *        - cc = (optional) address(es) to carbon copy
    *        - bcc = (optional) address(es) to blind carbon copy
    *        - subject = (optional) e-mail subject
    *        - newsgroups = (optional) newsgroup(s) to post to
    *        - followupto = (optional) address(es) to follow up to
    *        - extra = (optional) extra tags for the href link
    *
    * Examples:
    * <pre>
    * {mailto address="me@domain.com"}
    * {mailto address="me@domain.com" encode="javascript"}
    * {mailto address="me@domain.com" encode="hex"}
    * {mailto address="me@domain.com" subject="Hello to you!"}
    * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
    * {mailto address="me@domain.com" extra='class="mailto"'}
    * </pre>
    * @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}
    *          (Smarty online manual)
    * @version  1.2
    * @author  Monte Ohrt <monte@ispi.net>
    * @author  credits to Jason Sweat (added cc, bcc and subject functionality)
    * @param    array
    * @param    Smarty
    * @return  string
    */
    function smarty_function_mailto($params, &$smarty)
    {
        $extra = '';
     
        if (empty($params['address'])) {
            $smarty->trigger_error("mailto: missing 'address' parameter");
            return;
        } else {
            $address = $params['address'];
        }
     
        $text = $address;
     
        // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
        // so, don't encode it.
        $mail_parms = array();
        foreach ($params as $var=>$value) {
            switch ($var) {
                case 'cc':
                case 'bcc':
                case 'followupto':
                    if (!empty($value))
                        $mail_parms[] = $var.'='.str_replace('%40','@',rawurlencode($value));
                    break;
                   
                case 'subject':
                case 'newsgroups':
                    $mail_parms[] = $var.'='.rawurlencode($value);
                    break;
     
                case 'extra':
                case 'text':
                    $$var = $value;
     
                default:
            }
        }
     
        $mail_parm_vals = '';
        for ($i=0; $i<count($mail_parms); $i++) {
            $mail_parm_vals .= (0==$i) ? '?' : '&';
            $mail_parm_vals .= $mail_parms[$i];
        }
        $address .= $mail_parm_vals;
     
        $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
        if (!in_array($encode,array('javascript','hex','none')) ) {
            $smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex");
            return;
        }
     
        if ($encode == 'javascript' ) {
            $string = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');';
     
            $js_encode = '';
            for ($x=0; $x < strlen($string); $x++) {
                $js_encode .= '%' . bin2hex($string[$x]);
            }
     
            return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>';
     
        } elseif ($encode == 'hex') {
     
            preg_match('!^(.*)(\?.*)$!',$address,$match);
            if(!empty($match[2])) {
                $smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");
                return;
            }
            $address_encode = '';
            for ($x=0; $x < strlen($address); $x++) {
                if(preg_match('!\w!',$address[$x])) {
                    $address_encode .= '%' . bin2hex($address[$x]);
                } else {
                    $address_encode .= $address[$x];
                }
            }
            $text_encode = '';
            for ($x=0; $x < strlen($text); $x++) {
                $text_encode .= '&#x' . bin2hex($text[$x]).';';
            }
     
            $mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
            return '<a href="'.$mailto.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';
     
        } else {
            // no encoding
            return '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
     
        }
     
    }
     
    /* vim: set expandtab: */
     
    ?>
    Code (markup):

     
    rheahold, Mar 28, 2013 IP
  2. EricBruggema

    EricBruggema Well-Known Member

    Messages:
    1,740
    Likes Received:
    28
    Best Answers:
    13
    Trophy Points:
    175
    #2
    Its in the comments

    {mailto address="" bcc=","}
     
    EricBruggema, Mar 28, 2013 IP
    GMF likes this.