Link to ecard in e-mail Link to ecard in e-mail
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Link to ecard in e-mail

Started by penelope, October 29, 2006, 12:14:13 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

penelope

Hi all,  :)

Is it possible to change the ecard content in the email with only a link to the ecard

Like:

You received an e-card!
Click here to see your e-card! ( Link to the online e-card )

( Just an example to tell you what i mean  :D )

I have really no idea how i can do this ??? Because if i change the displayecard.php it will change in the e-mail but also for the online link  :(

Hope someone can help me out!

Regards,

Penelope


Sami

It would be better if you post what you've found for others with same question
‍I don't answer to PM with support question
Please post your issue to related board

penelope

Ok i will do my best to remember what i've done, it's been a few weeks ago :)

First make a file called displayimage.php and past the underneath code in this file.

<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2006 Coppermine Dev Team
  v1.1 originally written by Gregory DEMAR

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  ********************************************
  Coppermine version: 1.4.9
  $Source$
  $Revision: 3125 $
  $Author: gaugau $
  $Date: 2006-06-16 08:48:03 +0200 (Fr, 16 Jun 2006) $
**********************************************/

define('IN_COPPERMINE'true);
define('DISPLAYIMAGE_PHP'true);
define('INDEX_PHP'true);
//define('SMILIES_PHP', true);

require('include/init.inc.php');

if (!
USER_ID && $CONFIG['allow_unlogged_access'] == 0) {
    
$redirect $redirect "login.php";
    
header("Location: $redirect");
    exit();
}

if (
$CONFIG['enable_smilies']) include("include/smilies.inc.php");

$breadcrumb '';
$breadcrumb_text '';
$cat_data = array();

if(
$CONFIG['read_exif_data'] ){
        include(
"include/exif_php.inc.php");
}
if(
$CONFIG['read_iptc_data'] ){
        include(
"include/iptc.inc.php");
}


/**
 * Local functions definition
 */

# Sanitize the data - to fix the XSS vulnerability - Aditya
function sanitize_data(&$value$key)
{
if (is_array($value)) {
array_walk($value'sanitize_data');
} else {
# sanitize against sql/html injection; trim any nongraphical non-ASCII character:
$value trim(htmlentities(strip_tags(trim($value,"\x7f..\xff\x0..\x1f")),ENT_QUOTES));
}
}
function 
html_picture_menu()
{
    global 
$lang_display_image_php$CURRENT_PIC_DATA$CURRENT_ALBUM_DATA$CONFIG;

    
$mime_content cpg_get_type($CURRENT_PIC_DATA['filename']);
    
$picmenu '';

  if (
false) { //(!($mime_content['content']=='image')) {
    
$picmenu = <<<EOT
     <a href="#" onclick="return MM_openBrWindow('setplayer.php?={$mime_content['extension']}','Set_Player','scrollbars=no,toolbar=no,status=no,resizable=no')" class="admin_menu" >{$lang_display_image_php['set_player']}</a>
EOT;
  }

  if ((
USER_ADMIN_MODE && $CURRENT_ALBUM_DATA['category'] == FIRST_USER_CAT USER_ID) || ($CONFIG['users_can_edit_pics'] && $CURRENT_PIC_DATA['owner_id'] == USER_ID && USER_ID != 0) || GALLERY_ADMIN_MODE) {
    
$picmenu .= <<<EOT
     <a href="javascript:;" onclick="return MM_openBrWindow('picEditor.php?id={$CURRENT_PIC_DATA['pid']}','Crop_Picture','scrollbars=yes,toolbar=no,status=yes,resizable=yes')" class="admin_menu" >{$lang_display_image_php['crop_pic']}</a> <a href="editOnePic.php?id={$CURRENT_PIC_DATA['pid']}&amp;what=picture"  class="admin_menu">{$lang_display_image_php['edit_pic']}</a> <a href="delete.php?id={$CURRENT_PIC_DATA['pid']}&amp;what=picture"  class="admin_menu" onclick="return confirm('{$lang_display_image_php['confirm_del']}'); return false; ">{$lang_display_image_php['del_pic']}</a>
EOT;
  }

  return 
$picmenu;
}

// Display picture information
function html_picinfo()
{
    global 
$CONFIG$CURRENT_PIC_DATA$CURRENT_ALBUM_DATA$THEME_DIR$FAVPICS$REFERER;
    global 
$album$lang_picinfo$lang_display_image_php$lang_byte_units$lastup_date_fmt;

    if (
$CURRENT_PIC_DATA['owner_id'] && $CURRENT_PIC_DATA['owner_name']) {
        
$owner_link '<a href ="profile.php?uid=' $CURRENT_PIC_DATA['owner_id'] . '">' $CURRENT_PIC_DATA['owner_name'] . '</a> ';
    } else {
        
$owner_link '';
    }

    if (
GALLERY_ADMIN_MODE && $CURRENT_PIC_DATA['pic_raw_ip']) {
        if (
$CURRENT_PIC_DATA['pic_hdr_ip']) {
            
$ipinfo ' (' $CURRENT_PIC_DATA['pic_hdr_ip'] . '[' $CURRENT_PIC_DATA['pic_raw_ip'] . ']) / ';
        } else {
            
$ipinfo ' (' $CURRENT_PIC_DATA['pic_raw_ip'] . ') / ';
        }
    } else {
        if (
$owner_link) {
            
$ipinfo '/ ';
        } else {
            
$ipinfo '';
        }
    }

    
$info[$lang_picinfo['Filename']] = htmlspecialchars($CURRENT_PIC_DATA['filename']);
    
$info[$lang_picinfo['Album name']] = '<span class="alblink">' $owner_link $ipinfo '<a href="thumbnails.php?album=' $CURRENT_PIC_DATA['aid'] . '">' $CURRENT_ALBUM_DATA['title'] . '</a></span>';

    if (
$CURRENT_PIC_DATA['votes'] > 0) {
        if (
defined('THEME_HAS_RATING_GRAPHICS')) {
            
$prefix $THEME_DIR;
        } else {
            
$prefix '';
        }
        if (
GALLERY_ADMIN_MODE) {
          
$width 800;
          
$height 500;
        } else {
          
$width 400;
          
$height 250;
        }

        
$detailsLink $CONFIG['vote_details'] ? ' (<a href="#" onclick="MM_openBrWindow(\'stat_details.php?type=vote&amp;pid='.$CURRENT_PIC_DATA['pid'].'&amp;sort=sdate&amp;dir=&amp;sdate=1&amp;ip=1&amp;rating=1&amp;referer=1&amp;browser=1&amp;os=1\',\'\',\'resizable=yes,width='.$width.',height='.$height.',top=50,left=50,scrollbars=yes\'); return false;">'.$lang_picinfo['details'].'</a>)' '';
        
$info[sprintf($lang_picinfo['Rating'], $CURRENT_PIC_DATA['votes'])] = '<img src="' $prefix 'images/rating' round($CURRENT_PIC_DATA['pic_rating'] / 2000) . '.gif" align="middle" alt="" />'.$detailsLink;
    }

    if (
$CURRENT_PIC_DATA['keywords'] != "") {
        
$info[$lang_picinfo['Keywords']] = '<span class="alblink">' preg_replace("/(\S+)/""<a href=\"thumbnails.php?album=search&amp;search=\\1\">\\1</a>" $CURRENT_PIC_DATA['keywords']) . '</span>';
    }

    for (
$i 1$i <= 4$i++) {
        if (
$CONFIG['user_field' $i '_name']) {
            if (
$CURRENT_PIC_DATA['user' $i] != "") {
                
$info[$CONFIG['user_field' $i '_name']] = make_clickable($CURRENT_PIC_DATA['user' $i]);
            }
        }
    }

    
$info[$lang_picinfo['File Size']] = ($CURRENT_PIC_DATA['filesize'] > 10240 ? ($CURRENT_PIC_DATA['filesize'] >> 10) . '&nbsp;' $lang_byte_units[1] : $CURRENT_PIC_DATA['filesize'] . '&nbsp;' $lang_byte_units[0]);
    
$info[$lang_picinfo['File Size']] = '<span dir="ltr">' $info[$lang_picinfo['File Size']] . '</span>';
    
$info[$lang_picinfo['Date Added']] = localised_date($CURRENT_PIC_DATA['ctime'],$lastup_date_fmt);
    
$info[$lang_picinfo['Dimensions']] = sprintf($lang_display_image_php['size'], $CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight']);
    
$detailsLink = ($CURRENT_PIC_DATA['hits'] && $CONFIG['vote_details'] && GALLERY_ADMIN_MODE) ? ' (<a href="#" onclick="MM_openBrWindow(\'stat_details.php?type=hits&amp;pid='.$CURRENT_PIC_DATA['pid'].'&amp;sort=sdate&amp;dir=&amp;sdate=1&amp;ip=1&amp;search_phrase=1&amp;referer=1&amp;browser=1&amp;os=1\',\'\',\'resizable=yes,width=800,height=500,top=50,left=50,scrollbars=yes\'); return false;">'.$lang_picinfo['details'].'</a>)' '';
    
$info[$lang_picinfo['Displayed']] = sprintf($lang_display_image_php['views'], $CURRENT_PIC_DATA['hits']);
    
$info[$lang_picinfo['Displayed']] .= $detailsLink;

    
$path_to_pic $CONFIG['fullpath'] . $CURRENT_PIC_DATA['filepath'] . $CURRENT_PIC_DATA['filename'];

    if (
$CONFIG['read_exif_data']) $exif exif_parse_file($path_to_pic);

    if (isset(
$exif) && is_array($exif)) {
array_walk($exif'sanitize_data');
        
$info array_merge($info,$exif);
    }

    if (
$CONFIG['read_iptc_data']) $iptc get_IPTC($path_to_pic);

    if (isset(
$iptc) && is_array($iptc)) {
array_walk($iptc'sanitize_data');
        if (isset(
$iptc['Title'])) $info[$lang_picinfo['iptcTitle']] = $iptc['Title'];
        if (isset(
$iptc['Copyright'])) $info[$lang_picinfo['iptcCopyright']] = $iptc['Copyright'];
        if (!empty(
$iptc['Keywords'])) $info[$lang_picinfo['iptcKeywords']] = implode(' ',$iptc['Keywords']);
        if (isset(
$iptc['Category'])) $info[$lang_picinfo['iptcCategory']] = $iptc['Category'];
        if (!empty(
$iptc['SubCategories'])) $info[$lang_picinfo['iptcSubCategories']] = implode(' ',$iptc['SubCategories']);
    }
    
// Create the absolute URL for display in info
    
$info[$lang_picinfo['URL']] = '<a href="' $CONFIG["ecards_more_pic_target"] . (substr($CONFIG["ecards_more_pic_target"], -1) == '/' '' '/') .basename($_SERVER['PHP_SELF']) . "?pos=-$CURRENT_PIC_DATA[pid]'" >' $CONFIG["ecards_more_pic_target"] . (substr($CONFIG["ecards_more_pic_target"], -1) == '/' '' '/') . basename($_SERVER['PHP_SELF']) . "?pos=-$CURRENT_PIC_DATA[pid]'</a>';
    
// with subdomains the variable is $_SERVER["SERVER_NAME"] does not return the right value instead of using a new config variable I reused $CONFIG["ecards_more_pic_target"] no trailing slash in the configure
    // Create the add to fav link
$ref $REFERER "&amp;ref=$REFERER'';
    if (!
in_array($CURRENT_PIC_DATA['pid'], $FAVPICS)) {
        
$info[$lang_picinfo['addFavPhrase']] = "<a href=\"addfav.php?pid=" $CURRENT_PIC_DATA['pid'] . $ref "\" >" $lang_picinfo['addFav'] . '</a>';
    } else {
        
$info[$lang_picinfo['addFavPhrase']] = "<a href=\"addfav.php?pid=" $CURRENT_PIC_DATA['pid']  . $ref "\" >" $lang_picinfo['remFav'] . '</a>';
    }

    
/**
     * Filter file information
     */
    
$info CPGPluginAPI::filter('file_info',$info);

    return 
theme_html_picinfo($info);
}

function 
get_subcat_data($parent$level)
{
    global 
$CONFIG$ALBUM_SET_ARRAY;

    
$result cpg_db_query("SELECT cid, name, description FROM {$CONFIG['TABLE_CATEGORIES']} WHERE parent = '$parent'");
    if (
mysql_num_rows($result) > 0) {
        
$rowset cpg_db_fetch_rowset($result);
        foreach (
$rowset as $subcat) {
            
$result cpg_db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = {$subcat['cid']}");
            
$album_count mysql_num_rows($result);
            while (
$row mysql_fetch_array($result)) {
                
$ALBUM_SET_ARRAY[] = $row['aid'];
            } 
// while
        
}
        if (
$level 1get_subcat_data($subcat['cid'], $level -1);
    }
}

/**
 * Main code
 */

$pos = isset($_GET['pos']) ? (int)$_GET['pos'] : 0;

/**
 * Hack added by tarique to prevent incorrect picture being seen on last view or last uploaded
 */

$pid = isset($_GET['pid']) ? (int)$_GET['pid'] : 0;

$cat = isset($_GET['cat']) ? (int)$_GET['cat'] : 0;
$album = isset($_GET['album']) ? $_GET['album'] : '';
// Build the album set if required
/*
//disabled by donnoman
if (!is_numeric($album) && $cat) { // Meta albums, we need to restrict the albums to the current category
    if ($cat < 0) {
        $ALBUM_SET .= 'AND aid IN (' . (- $cat) . ') ';
    } else {
        $ALBUM_SET_ARRAY = array();
        if ($cat == USER_GAL_CAT)
            $where = 'category > ' . FIRST_USER_CAT;
        else
            $where = "category = '$cat'";

        $result = cpg_db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE $where");
        while ($row = mysql_fetch_array($result)) {
            $ALBUM_SET_ARRAY[] = $row['aid'];
        } // while
        get_subcat_data($cat, $CONFIG['subcat_level']);
        // Treat the album set
        if (count($ALBUM_SET_ARRAY)) {
            $set = '';
            foreach ($ALBUM_SET_ARRAY as $album_id) $set .= ($set == '') ? $album_id : ',' . $album_id;
            $ALBUM_SET .= "AND aid IN ($set) ";
        }
    }
}
//disabled by donnoman
*/
//get_meta_album_set in functions.inc.php will populate the $ALBUM_SET instead; matches $META_ALBUM_SET.
get_meta_album_set($cat,$ALBUM_SET);
$META_ALBUM_SET $ALBUM_SET//displayimage uses $ALBUM_SET but get_pic_data in functions now uses $META_ALBUM_SET

//attempt to fix topn images for keyworded albums
if ($cat 0) {
    
$result cpg_db_query("SELECT category, title, aid, keyword, description, alb_password_hint FROM {$CONFIG['TABLE_ALBUMS']} WHERE aid='" . (- $cat) . "'");
    if (
mysql_num_rows($result) > 0) {
        
$CURRENT_ALBUM_DATA mysql_fetch_array($result);
        
$CURRENT_ALBUM_KEYWORD $CURRENT_ALBUM_DATA['keyword'];
    }
}
// Retrieve data for the current picture
if ($pos || $pid 0) {
    
$pid = ($pos 0) ? -$pos $pid;
    
$result cpg_db_query("SELECT aid from {$CONFIG['TABLE_PICTURES']} WHERE pid='$pid$ALBUM_SET LIMIT 1");
    if (
mysql_num_rows($result) == 0cpg_die(ERROR$lang_errors['non_exist_ap'], __FILE____LINE__);
    
$row mysql_fetch_array($result);
    
$album $row['aid'];
    
$pic_data get_pic_data($album$pic_count$album_name, -1, -1false);
    for(
$pos 0$pic_data[$pos]['pid'] != $pid && $pos $pic_count$pos++);
    
$pic_data get_pic_data($album$pic_count$album_name$pos1false);
    
$CURRENT_PIC_DATA $pic_data[0];

} elseif (isset(
$_GET['pos'])) {
    
$pic_data get_pic_data($album$pic_count$album_name$pos1false);
    if (
$pic_count == 0) {
        
cpg_die(INFORMATION$lang_errors['no_img_to_display'], __FILE____LINE__);
    } elseif (
count($pic_data) == && $pos >= $pic_count) {
        
$pos $pic_count 1;
        
$human_pos $pos 1;
        
$pic_data get_pic_data($album$pic_count$album_name$pos1false);
    }
    
$CURRENT_PIC_DATA $pic_data[0];
}

// Retrieve data for the current album
if (isset($CURRENT_PIC_DATA)) {
    
$result cpg_db_query("SELECT title, comments, votes, category, aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE aid='{$CURRENT_PIC_DATA['aid']}' LIMIT 1");
    if (!
mysql_num_rows($result)) cpg_die(CRITICAL_ERRORsprintf($lang_errors['pic_in_invalid_album'], $CURRENT_PIC_DATA['aid']), __FILE____LINE__);
    
$CURRENT_ALBUM_DATA mysql_fetch_array($result);

    if (
is_numeric($album)) {
        
$cat = - $album;
        
$actual_cat $CURRENT_ALBUM_DATA['category'];
        
breadcrumb($actual_cat$breadcrumb$breadcrumb_text);
        
$cat = - $album;
    } else {
        
$actual_cat $CURRENT_ALBUM_DATA['category'];
        
breadcrumb($actual_cat$breadcrumb$breadcrumb_text);
    }
}

if (isset(
$_GET['fullsize'])) {
    
theme_display_fullsize_pic();
    
ob_end_flush();
} elseif (isset(
$_GET['slideshow'])) {
    
theme_slideshow();
    
ob_end_flush();
} else {
    if (!isset(
$_GET['pos'])) cpg_die(ERROR$lang_errors['non_exist_ap'], __FILE____LINE__);
    
$picture_title $CURRENT_PIC_DATA['title'] ? $CURRENT_PIC_DATA['title'] : strtr(preg_replace("/(.+)\..*?\Z/""\\1"htmlspecialchars($CURRENT_PIC_DATA['filename'])), "_"" ");

    
$nav_menu theme_html_img_nav_menu();
    
$picture theme_html_picture();
    
$votes theme_html_rating_box();
    
$pic_info html_picinfo();
    
$comments theme_html_comments($CURRENT_PIC_DATA['pid']);
    if (
$CURRENT_PIC_DATA['keywords']) { $meta_keywords "<meta name=\"keywords\" content=\"".$CURRENT_PIC_DATA['keywords']."\"/>"; }
        
//$meta_nav .= "<link rel=\"alternate\" type=\"text/xml\" title=\"RSS feed\" href=\"rss.php\" />
       // ";
        
$meta_keywords .= $meta_nav;
    
pageheader($album_name '/' $picture_title$meta_keywordsfalse);
    
// Display Breadcrumbs
    
if ($breadcrumb && !(strpos($CONFIG['main_page_layout'],"breadcrumb")===false)) {
        
theme_display_breadcrumb($breadcrumb$cat_data);
    }
    
// Display Filmstrip if the album is not search
    
if ($album != 'search') {
        
$film_strip display_film_strip($album, (isset($cat) ? $cat 0), $postrue);
    }
    
CPGPluginAPI::filter('post_breadcrumb',null);
    
theme_display_image($nav_menu$picture$votes$pic_info$comments$film_strip);
    
pagefooter();
    
ob_end_flush();
}

?>



2) Add this file displayimage.php to /gallery/



penelope

3) Open displayecard.php and select all!

4) Now copy and paste the underneath code into your displayecard.php

<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2006 Coppermine Dev Team
  v1.1 originally written by Gregory DEMAR

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  ********************************************
  Coppermine version: 1.4.9
  $Source$
  $Revision: 3227 $
  $Author: tranzndance $
  $Date: 2006-08-15 07:54:45 +0200 (Di, 15 Aug 2006) $
**********************************************/

define('IN_COPPERMINE'true);
define('DISPLAYECARD_PHP'true);

require(
'include/init.inc.php');
require(
'include/smilies.inc.php');

if (!isset(
$_GET['data'])) cpg_die(CRITICAL_ERROR$lang_errors['param_missing'], __FILE____LINE__);

$data = array();
$data = @unserialize(@base64_decode($_GET['data']));

// attempt to obtain full link from db if ecard logging enabled and min 12 chars of data is provided and only 1 match
if ((!is_array($data)) && $CONFIG['log_ecards'] && (strlen($_GET['data']) > 12)) {
        
$result cpg_db_query("SELECT link FROM {$CONFIG['TABLE_ECARDS']} WHERE link LIKE '{$_GET['data']}%'");
        if (
mysql_num_rows($result) === 1) {
                
$row mysql_fetch_assoc($result);
                
$data = @unserialize(@base64_decode($row['link']));
        }
}

if (
is_array($data)) {

// Remove HTML tags as we can't trust what we receive
foreach($data as $key => $value$data[$key] = html_entity_decode(strtr($value$HTML_SUBST));
// Load template parameters
$params = array('{LANG_DIR}' => $lang_text_dir,
    
'{TITLE}' => sprintf($lang_ecard_php['ecard_title'], $data['sn']),
    
'{CHARSET}' => $CONFIG['charset'] == 'language file' $lang_charset $CONFIG['charset'],
    
'{VIEW_ECARD_TGT}' => '',
    
'{VIEW_ECARD_LNK}' => '',
    
'{PIC_URL}' => $data['p'],
    
'{URL_PREFIX}' => '',
    
'{GREETINGS}' => $data['g'],
    
'{MESSAGE}' => bb_decode(process_smilies($data['m'])),
    
'{SENDER_EMAIL}' => $data['se'],
    
'{SENDER_NAME}' => $data['sn'],
    
'{VIEW_MORE_TGT}' => $CONFIG['ecards_more_pic_target'],
    
'{VIEW_MORE_LNK}' => $lang_ecard_php['view_more_pics'],
    
'{PID}' => $data['pid'],
    
'{PIC_TITLE}' => $data['pt'],
'{PIC_CAPTION}' => $data['pc'],
    );
// Parse template
//dummy way to check if the file is flash anim!
if (strpos($data['p'], ".swf") > 1) {
    
$flash '<object id="SWFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/
                cabs/flash/swflash.cab#version=6,0,0,0"
            type="application/x-shockwave-flash">
        <param name="autostart" value="true">
        <param name="src" value="{PIC_URL}">
        <embed src="{PIC_URL}" autostart="true" type="application/x-shockwave-flash">
        </object>
    '
;
    
$template_ecard str_replace('<img src="{PIC_URL}" border="1" alt="" />'$flash,
        
$template_ecard);
}
echo 
template_eval($template_ecard$params);

} else {
        
cpg_die(CRITICAL_ERROR$lang_displayecard_php['invalid_data'], __FILE____LINE__);
}
?>



4) Open ecard.php and select all!


penelope

5) Now copy and paste the underneath code into your ecard.php

<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2006 Coppermine Dev Team
  v1.1 originally written by Gregory DEMAR

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  ********************************************
  Coppermine version: 1.4.9
  $Source$
  $Revision: 3125 $
  $Author: gaugau $
  $Date: 2006-06-16 08:48:03 +0200 (Fr, 16 Jun 2006) $
**********************************************/

define('IN_COPPERMINE'true);
define('ECARDS_PHP'true);

require(
'include/init.inc.php');
require(
'include/smilies.inc.php');
require(
'include/mailer.inc.php');

if (!
USER_CAN_SEND_ECARDScpg_die(ERROR$lang_errors['access_denied'], __FILE____LINE__);

//print_r(get_defined_constants());

function get_post_var($name$default '')
{

    return isset(
$_POST[$name]) ? $_POST[$name] : $default;
}

$pid = (int)$_GET['pid'];
$album $_GET['album'];
$pos = (int)$_GET['pos'];

$sender_name get_post_var('sender_name'USER_NAME USER_NAME : (isset($USER['name']) ? $USER['name'] : ''));
if (
defined('UDB_INTEGRATION')AND USER_ID$USER_DATA array_merge($USER_DATA,$cpg_udb->get_user_infos(USER_ID));
if (
$USER_DATA['user_email']){
$sender_email $USER_DATA['user_email'];
$sender_box $sender_email;
} else {
$sender_email get_post_var('sender_email',$USER['email'] ? $USER['email'] : '');
$sender_box "<input type=\"text\" class=\"textinput\" value=\"$sender_email\" name=\"sender_email\" style=\"width: 100%;\" />";
}
$recipient_name get_post_var('recipient_name');
$recipient_email get_post_var('recipient_email');
$greetings get_post_var('greetings');
$message get_post_var('message');
$sender_email_warning '';
$recipient_email_warning '';
// Get picture thumbnail url
$result cpg_db_query("SELECT * from {$CONFIG['TABLE_PICTURES']} WHERE pid='$pid$ALBUM_SET");
if (!
mysql_num_rows($result)) cpg_die(ERROR$lang_errors['non_exist_ap'], __FILE____LINE__);
$row mysql_fetch_array($result);
$thumb_pic_url get_pic_url($row'thumb');

$pic_title $row['title'];
$pic_caption bb_decode($row['caption']);

//dummy way to check if the file is flash anim!
if (!is_image($row['filename'])) {
    if (
strpos($row['filename'], ".swf") < ) {
        
cpg_die(ERROR$lang_ecard_php['error_not_image'], __FILE____LINE__);
    }
}

// Check supplied email address
$valid_email_pattern "^[_\.0-9a-z\-]+@([0-9a-z][0-9a-z-]*\.)+[a-z]{2,6}$";
$valid_sender_email eregi($valid_email_pattern$sender_email);
$valid_recipient_email eregi($valid_email_pattern$recipient_email);
$invalid_email '<font size="1">' $lang_ecard_php['invalid_email'] . ' (' $recipient_email ')</font>';
if (!
$valid_sender_email && count($_POST) > 0$sender_email_warning $invalid_email;
if (!
$valid_recipient_email && count($_POST) > 0$recipient_email_warning $invalid_email;

pageheader($lang_ecard_php['title']);

if (isset(
$_POST['submit'])) {

// Create and send the e-card
if (count($_POST) > && $valid_sender_email && $valid_recipient_email) {
    
$gallery_url_prefix $CONFIG['ecards_more_pic_target']. (substr($CONFIG['ecards_more_pic_target'], -1) == '/' '' '/');
    if (
$CONFIG['make_intermediate'] && max($row['pwidth'], $row['pheight']) > $CONFIG['picture_width']) {
        
$n_picname get_pic_url($row'normal');
    } else {
        
$n_picname get_pic_url($row'fullsize');
    }

    if (!
stristr($n_picname'http:')) $n_picname $gallery_url_prefix $n_picname;

    
$msg_content process_smilies($message$gallery_url_prefix);

    
$data = array('rn' => $_POST['recipient_name'],
        
'sn' => $_POST['sender_name'],
        
'se' => $sender_email,
        
'p' => $n_picname,
        
'g' => $greetings,
        
'm' => $message,
        
'pid' => $pid,
        
'pt' => $pic_title,
        
'pc' => $pic_caption,
        );

    
$encoded_data urlencode(base64_encode(serialize($data)));

    
$params = array('{LANG_DIR}' => $lang_text_dir,
        
'{TITLE}' => sprintf($lang_ecard_php['ecard_title'], $sender_name),
        
'{CHARSET}' => $CONFIG['charset'] == 'language file' $lang_charset $CONFIG['charset'],
        
'{VIEW_ECARD_TGT}' => "{$gallery_url_prefix}displayemail.php?data=$encoded_data",
        
'{VIEW_ECARD_LNK}' => $lang_ecard_php['view_ecard'],
        
'{VIEW_ECARD_LNK_PLAINTEXT}' => $lang_ecard_php['view_ecard_plaintext'],
        
'{PIC_URL}' => $n_picname,
        
'{URL_PREFIX}' => $gallery_url_prefix,
        
'{GREETINGS}' => $greetings,
        
'{MESSAGE}' => bb_decode($msg_content),
        
'{PLAINTEXT_MESSAGE}' => $message,
        
'{SENDER_EMAIL}' => $sender_email,
        
'{SENDER_NAME}' => $sender_name,
        
'{VIEW_MORE_TGT}' => $CONFIG['ecards_more_pic_target'],
        
'{VIEW_MORE_LNK}' => $lang_ecard_php['view_more_pics'],
        
'{PID}' => $pid,
        
'{PIC_TITLE}' => $pic_title,
        
'{PIC_CAPTION}' => $pic_caption,
        );

                                
$message template_eval($template_ecard$params);
                                
$plaintext_message template_eval($template_ecard_plaintext$params);

        
$tempTime time();
        
$message .= sprintf($lang_ecard_php['ecards_footer'], $sender_namelocalised_date(-1,$comment_date_fmt));
                                
$subject sprintf($lang_ecard_php['ecard_title'], $sender_name);

                                
$result cpg_mail($recipient_email$subject$message'text/html'$sender_name$sender_email$plaintext_message);

        
//write ecard log
        
if ($CONFIG['log_ecards'] == 1) {
          
$result_log cpg_db_query("INSERT INTO {$CONFIG['TABLE_ECARDS']} (sender_name, sender_email, recipient_name, recipient_email, link, date, sender_ip) VALUES ('$sender_name', '$sender_email', '$recipient_name', '$recipient_email',   '$encoded_data', '$tempTime', '{$_SERVER["REMOTE_ADDR"]}')");
          }

    if (!
USER_ID) {
        
$USER['name'] = $sender_name;
        
$USER['email'] = $sender_email;
    }

    if (
$result) {
        
//pageheader($lang_ecard_php['title']);
        
msg_box($lang_cpg_die[INFORMATION], $lang_ecard_php['send_success'], $lang_continue"displayimage.php?album=$album&amp;pos=$pos");
                                echo 
'<br />';
                                
starttable('100%'$lang_ecard_php['preview']);
                                echo 
'<tr><td>';
//dummy way to check if the file is flash anim!
if (strpos($n_picname".swf") > 1) {
    
$flash '<object id="SWFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/
                cabs/flash/swflash.cab#version=6,0,0,0"
            type="application/x-shockwave-flash">
        <param name="autostart" value="true">
        <param name="src" value="{PIC_URL}">
        <embed src="{PIC_URL}" autostart="true" type="application/x-shockwave-flash">
        </object>'
;
    
$template_ecard str_replace('<img src="{PIC_URL}" border="1" alt="" />'$flash,
        
$template_ecard);
}
                                echo 
template_eval($template_ecard$params);
                                echo 
'</td></tr>';
                                
endtable();
        
pagefooter();
        
ob_end_flush();
        exit;
    } else {
        
cpg_die(ERROR$lang_ecard_php['send_failed'], __FILE____LINE__);
    }
        }
}
//submit

elseif (isset($_POST['preview'])) {

    if (
$CONFIG['make_intermediate'] && max($row['pwidth'], $row['pheight']) > $CONFIG['picture_width']) {
        
$n_picname get_pic_url($row'normal');
    } else {
        
$n_picname get_pic_url($row'fullsize');
    }
    if (!
stristr($n_picname'http:')) $n_picname $gallery_url_prefix $n_picname;
    
$msg_content process_smilies($message$gallery_url_prefix);
    
$data = array(
        
'sn' => $_POST['sender_name'],
        
'se' => $sender_email,
        
'p' => $n_picname,
        
'g' => $greetings,
        
'm' => $message,
        
'pid' => $pid,
        
'pt' => $pic_title,
        
'pc' => $pic_caption,
        );

    
$params = array('{LANG_DIR}' => $lang_text_dir,
        
'{TITLE}' => sprintf($lang_ecard_php['ecard_title'], $sender_name),
        
'{CHARSET}' => $CONFIG['charset'] == 'language file' $lang_charset $CONFIG['charset'],
        
'{VIEW_ECARD_TGT}' => "{$gallery_url_prefix}displayecard.php?data=$encoded_data",
        
'{VIEW_ECARD_LNK}' => $lang_ecard_php['preview_view_ecard'],
        
'{PIC_URL}' => $n_picname,
        
'{URL_PREFIX}' => $gallery_url_prefix,
        
'{GREETINGS}' => $greetings,
        
'{MESSAGE}' => bb_decode($msg_content),
        
'{SENDER_EMAIL}' => $sender_email,
        
'{SENDER_NAME}' => $sender_name,
        
'{VIEW_MORE_TGT}' => $CONFIG['ecards_more_pic_target'],
        
'{VIEW_MORE_LNK}' => $lang_ecard_php['view_more_pics'],
        
'{PID}' => $pid,
        
'{PIC_TITLE}' => $pic_title,
        
'{PIC_CAPTION}' => $pic_caption,
        );

                                
starttable('100%'$lang_ecard_php['preview']);
                                echo 
'<tr><td>';
//dummy way to check if the file is flash anim!
if (strpos($data['p'], ".swf") > 1) {
    
$flash '<object id="SWFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/
                cabs/flash/swflash.cab#version=6,0,0,0"
            type="application/x-shockwave-flash">
        <param name="autostart" value="true">
        <param name="src" value="{PIC_URL}">
        <embed src="{PIC_URL}" width="100%" height="100%" autostart="true" type="application/x-shockwave-flash">
        </object>
    '
;
    
$template_ecard2 str_replace('<img src="{PIC_URL}" border="1" alt="" />'$flash,
        
$template_ecard2);
}
                                echo 
template_eval($template_ecard2$params);
                                echo 
'</td></tr>';
                                
endtable();
                                echo 
'<br />';
}
//preview

//pageheader($lang_ecard_php['title']);

//ecard form
if ($CONFIG['show_bbcode_help']) {$captionLabel '&nbsp;'cpg_display_help('f=index.html&amp;base=64&amp;h='.urlencode(base64_encode(serialize($lang_bbcode_help_title))).'&amp;t='.urlencode(base64_encode(serialize($lang_bbcode_help))),470,245);}
starttable("100%"$lang_ecard_php['title'], 3);

echo <<<EOT
        <tr>
                <td class="tableh2" colspan="2"><b>
{$lang_ecard_php['from']}</b></td>
                <td rowspan="6" align="center" valign="top" class="tableb">
                        <a href="displayimage.php?pos=-
{$pid}">
                                                                                                <img src="
$thumb_pic_url" alt="" vspace="8" border="0" class="image" /></a><br />
                </td>
        </tr>
        <tr>
                <td class="tableb" valign="top" width="40%">
                        <form method="post" name="post" action="
{$_SERVER['PHP_SELF']}?album=$album&amp;pid=$pid&amp;pos=$pos">
                        
{$lang_ecard_php['your_name']}<br />
                </td>
                <td valign="top" class="tableb" width="60%">
                        <input type="text" class="textinput" name="sender_name"  value="
$sender_name" style="width: 100%;" /><br />
                </td>
        </tr>
        <tr>
                <td class="tableb" valign="top" width="40%">
                        
{$lang_ecard_php['your_email']}<br />
                </td>
                <td valign="top" class="tableb" width="60%">
                        
{$sender_box}
                        
{$sender_email_warning}
                </td>
        </tr>
        <tr>
                <td class="tableh2" colspan="2"><b>
{$lang_ecard_php['to']}</b></td>
        </tr>
        <tr>
                <td class="tableb" valign="top" width="40%">
                        
{$lang_ecard_php['rcpt_name']}<br />
                </td>
                <td valign="top" class="tableb" width="60%">
                        <input type="text" class="textinput" name="recipient_name"  value="
$recipient_name" style="width: 100%;" /><br />
                </td>
        </tr>
        <tr>
                <td class="tableb" valign="top" width="40%">
                        
{$lang_ecard_php['rcpt_email']}<br />
                </td>
                <td valign="top" class="tableb" width="60%">
                        <input type="text" class="textinput" name="recipient_email"  value="
$recipient_email" style="width: 100%;" /><br />
                        
$recipient_email_warning
                </td>
        </tr>
        <tr>
                <td class="tableh2" colspan="3"><b>
{$lang_ecard_php['greetings']}</b></td>
        </tr>
        <tr>
                <td class="tableb" colspan="3">
                        <input type="text" class="textinput" name="greetings"  value="
$greetings" style="width: 100%;" /><br />
                </td>
        </tr>
        <tr>
                <td class="tableh2" colspan="3"><b>
{$lang_ecard_php['message']}$captionLabel</b></td>
        </tr>
        <tr>
                <td class="tableb" colspan="3" valign="top"><br />
                        <textarea name="message" class="textinput" rows="8" cols="40"  onselect="storeCaret_post(this);" onclick="storeCaret_post(this);" onkeyup="storeCaret_post(this);" style="width: 100%;">
$message</textarea><br /><br />
                </td>
        </tr>
        <tr>
                <td class="tableb" colspan="3" valign="top">

EOT;
echo 
generate_smilies();
echo <<<EOT
                </td>
        </tr>
        <tr>
                <td colspan="3" align="center" class="tablef">
                        <input type="submit" class="button" name="preview" title="
{$lang_ecard_php['preview_button']}" value="{$lang_ecard_php['preview_button']}" />
                                                                                                &nbsp;&nbsp;
                        <input type="submit" class="button" name="submit" title="
{$lang_ecard_php['submit_button']}" value="{$lang_ecard_php['submit_button']}" />
                        </form>
                </td>
        </tr>
EOT;

endtable();
pagefooter();
ob_end_flush();

?>




penelope

6) Open gallery/themes/Your template/theme.php

7) Find:

// HTML template for e-cards
$template_ecard = <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="{LANG_DIR}">
<head>
<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
<title>{TITLE}</title>
</head>
<body bgcolor="#FFFFFF" text="#0F5475" link="#0F5475" vlink="#0F5475" alink="#0F5475">
<br />
<p align="center"><a href="{VIEW_ECARD_TGT}"><b>{VIEW_ECARD_LNK}</b></a></p>
<table border="0" cellspacing="0" cellpadding="1" align="center">
  <tr>
    <td bgcolor="#000000">
      <table border="0" cellspacing="0" cellpadding="10" bgcolor="#ffffff">
        <tr>
          <td valign="top">
           <a href="{VIEW_MORE_TGT}displayimage.php?pos=-{PID}">
                                         <img src="{PIC_URL}" border="1" alt="" /></a>
                                         <br />
                                         <div align="center">
                                                 <h2>{PIC_TITLE}</h2>
                                         </div>

          </td>
          <td valign="top" width="300">
            <div align="right"><img src="{URL_PREFIX}images/stamp.gif" border="0" alt="" /></div>
            <br />
            <b><font face="arial" color="#000000" size="4">{GREETINGS}</font></b>
            <br />
            <br />
            <font face="arial" color="#000000" size="2">{MESSAGE}</font>
            <br />
            <br />
            <font face="arial" color="#000000" size="2">{SENDER_NAME}</font>
            (<a href="mailto:{SENDER_EMAIL}"><font face="arial" color="#000000" size="2">{SENDER_EMAIL}</font></a>)
          </td>
        </tr>
                <tr>
                        <td colspan="2">
                                {PIC_CAPTION}
                        </td>
                </tr>
      </table>
    </td>
  </tr>
</table>
<p align="center"><a href="{VIEW_MORE_TGT}"><b>{VIEW_MORE_LNK}</b></a></p>
</body>
</html>
EOT;

// plain-text template for e-cards (as fallback for clients that can't display html-formatted mails)
$template_ecard_plaintext = <<<EOT
{TITLE}
=========================================

{VIEW_ECARD_LNK_PLAINTEXT}:
{VIEW_ECARD_TGT}

{GREETINGS}


{PLAINTEXT_MESSAGE}

{SENDER_NAME} ({SENDER_EMAIL})

-----------------------------------------
{VIEW_MORE_LNK}:
{VIEW_MORE_TGT}
EOT;


8 ) Replace with

// HTML template for e-cards
$template_ecard = <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="{LANG_DIR}">
<head>
<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
<title>{TITLE}</title>
</head>
<body bgcolor="#ede3ec" text="#0F5475" link="#0F5475" vlink="#0F5475" alink="#0F5475">
<table border="0" cellspacing="0" cellpadding="1" align="center">
<tr>
          <td valign="top">
            <font face="arial" color="#000000" size="2">You have received an e-card from {SENDER_NAME}!</font>
            (<a href="mailto:{SENDER_EMAIL}"><font face="arial" color="#000000" size="2">{SENDER_EMAIL}</font></a>)
       <br /><br/>
<p align="center"><a href="{VIEW_ECARD_TGT}"><b>{VIEW_ECARD_LNK}</b></a></p>   
</td>
        </tr>
                <tr>
                        <td colspan="2"><br/><br/>
                                {PIC_CAPTION}
                        </td>
                </tr>
      </table>
</body>
</html>
EOT;

// plain-text template for e-cards (as fallback for clients that can't display html-formatted mails)
$template_ecard_plaintext = <<<EOT
{TITLE}
=========================================

{VIEW_ECARD_LNK_PLAINTEXT}:
{VIEW_ECARD_TGT}

{GREETINGS}


{PLAINTEXT_MESSAGE}

{SENDER_NAME} ({SENDER_EMAIL})

-----------------------------------------
{VIEW_MORE_LNK}:
{VIEW_MORE_TGT}
EOT;

// HTML template for e-cards2
$template_ecard2 = <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="{LANG_DIR}">
<head>
<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
<title>{TITLE}</title>
</head>
<body bgcolor="#ede3ec" text="#603a5d" link="#603a5d" vlink="#603a5d" alink="#603a5d">
<br />
<p align="center"><a href="{VIEW_ECARD_TGT}"><b>{VIEW_ECARD_LNK}</b></a></p>
<table border="0" cellspacing="0" cellpadding="1" align="center">
  <tr>
    <td bgcolor="#000000">
      <table border="0" cellspacing="0" cellpadding="0" bgcolor="#ffffff" height="100%" width="780">
        <tr>
          <td valign="middle" width="50%" height="240">
           <a href="{VIEW_MORE_TGT}displayimage.php?pos=-{PID}">
                                         <img src="{PIC_URL}" border="1" alt="" /></a>
                                         <br />
                                         

          </td>
          <td valign="top" width="500">
            <div align="right"><img src="{URL_PREFIX}images/stamp.gif" border="0" alt="" /></div>
           <font face="arial" color="#000000" size="2">&nbsp;{MESSAGE}</font>
            <br />
            <br />
            <font face="arial" color="#000000" size="2">&nbsp;{SENDER_NAME}</font>
            (<a href="mailto:{SENDER_EMAIL}"><font face="arial" color="#000000" size="2">&nbsp;{SENDER_EMAIL}</font></a>)
          </td>
        </tr>
                <tr>
                        <td colspan="2">
                                {PIC_CAPTION}
                        </td>
                </tr>
      </table>
    </td>
  </tr>
</table>
<p align="center"><a href="http://pinklady.ath.cx/board/gallery.php"><b>{VIEW_MORE_LNK}</b></a></p>
</body>
</html>
EOT;

// plain-text template for e-cards (as fallback for clients that can't display html-formatted mails)
$template_ecard2_plaintext = <<<EOT
{TITLE}
=========================================

{VIEW_ECARD_LNK_PLAINTEXT}:
{VIEW_ECARD_TGT}

{GREETINGS}


{PLAINTEXT_MESSAGE}

{SENDER_NAME} ({SENDER_EMAIL})

-----------------------------------------
{VIEW_MORE_LNK}:
{VIEW_MORE_TGT}
EOT;


9) Open /gallery/lang/english.php

10) Find:

// ------------------------------------------------------------------------- //
// File ecard.php
// ------------------------------------------------------------------------- //

if (defined('ECARDS_PHP') || defined('DISPLAYECARD_PHP')) $lang_ecard_php =array(
  'title' => 'Send an e-card',
  'invalid_email' => '<font color="red"><b>Warning</b></font>: invalid email address:', //cpg1.4
  'ecard_title' => 'An e-card from %s for you',
  'error_not_image' => 'Only images can be sent as an ecard.',
  'view_ecard' => 'Alternate link if the e-card does not display correctly', //cpg1.4
  'view_ecard_plaintext' => 'To view the ecard, copy and paste this url into your browser\'s address bar:', //cpg1.4
  'view_more_pics' => 'View more pictures !', //cpg1.4
  'send_success' => 'Your ecard was sent',
  'send_failed' => 'Sorry but the server can\'t send your e-card...',
  'from' => 'From',
  'your_name' => 'Your name',
  'your_email' => 'Your email address',
  'to' => 'To',
  'rcpt_name' => 'Recipient name',
  'rcpt_email' => 'Recipient email address',
  'greetings' => 'Heading', //cpg1.4
  'message' => 'Message', //cpg1.4
  'ecards_footer' => 'Sent by %s from IP %s at %s (Gallery time)', //cpg1.4
  'preview' => 'Preview of the ecard', //cpg1.4
  'preview_button' => 'Preview', //cpg1.4
  'submit_button' => 'Send ecard', //cpg1.4
  'preview_view_ecard' => 'This will be the alternate link to the ecard once it gets generated. It won\'t work for previews.', //cpg1.4
);


11) Replace with:

// ------------------------------------------------------------------------- //
// File ecard.php
// ------------------------------------------------------------------------- //

if (defined('ECARDS_PHP') || defined('DISPLAYECARD_PHP')) $lang_ecard_php =array(
  'title' => 'Send an e-card',
  'invalid_email' => '<font color="red"><b>Warning</b></font>: invalid email address:', //cpg1.4
  'ecard_title' => 'An e-card from %s for you',
  'error_not_image' => 'Only images can be sent as an ecard.',
  'view_ecard' => 'Click here to view your e-card!', //cpg1.4
  'view_ecard_plaintext' => 'To view the ecard, copy and paste this url into your browser\'s address bar:', //cpg1.4
  'view_more_pics' => 'View more e-cards and pictures !', //cpg1.4
  'send_success' => 'Your ecard was sent',
  'send_failed' => 'Sorry but the server can\'t send your e-card...',
  'from' => 'From',
  'your_name' => 'Your name',
  'your_email' => 'Your email address',
  'to' => 'To',
  'rcpt_name' => 'Recipient name',
  'rcpt_email' => 'Recipient email address',
  'greetings' => 'Heading', //cpg1.4
  'message' => 'Message', //cpg1.4
  'ecards_footer' => 'Sent by %s from IP %s at %s (Gallery time)', //cpg1.4
  'preview' => 'Preview of the ecard', //cpg1.4
  'preview_button' => 'Preview', //cpg1.4
  'submit_button' => 'Send ecard', //cpg1.4
  'preview_view_ecard' => 'This will be the alternate link to the ecard once it gets generated. It won\'t work for previews.', //cpg1.4
);


I think i put all the code above to make it work!  :)

If it doesn't work please let me know! Maybe i've forgot something, it was a few weeks ago i made this hack.  ;)

A working sample can you find here!

To send and view an e-card you have to register on the forum.

Hope you enjoy this hack!

Greets,

Penelope

penelope

p.s: Always make backup of the files you are going to edit!  ;)

( All the code didn't fit into one post, so that's why the several posts :) )

heartshapedbox

This doesnt work for me, from what i can tell it is the link in the email >>>

gallery/displayemail.php?data=

I dont have a displayemail.php





andjelina1

QuoteAlternate link if the e-card does not display correctly


I dont see ecard on my mail, only text in ecard, and show me text about not correctly link


what I must do????

(sorry for my gramma, and Im admin, and I use 1.4)

andjelina1

I wont see picture in mail...it is possible???