Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 07. September 2016 13:39
- Gardapro
- probiert CMS/ms aus
- Registriert: 01. April 2011
- Beiträge: 26
Formbuilder: Bild hochladen und innerhalb des Mails zeigen
Hallo
CMSMS 1.12.2
Formbuilder 0.1.8.4
CMSMailer 5.2.14
Ich kann Dateien uploaden und als Anhang an Mails anhängen.
Ich kann auch hochgeladene Bilder innerhalb des Mails als Bild anzeigen lassen.
Doch ich schaffe es nicht, hochgeladene Bilder innerhalb des Mails als Bild anzeigen zu lassen diese jedoch nicht als Anhang mitzusenden.
Die Checkbox "Datei darf nicht an E-Mails angehängt werden:" beeinflusst dies nicht.
und die Checkbox "Unterdrückt Dateinamen in E-Mails und Formularen die der Endbenutzer sieht:" verhindert, dass das Bild innerhalb des Mails angezeigt werden kann.
Im Formular werden 3 Dateien hochgeladen. Zwei sollen als Anhang mit, eines nur als Bild innerhalb des Mails angezeigt werden.
Was kann ich tun?
Beitrag geändert von Gardapro (07. September 2016 13:47)
Offline
#2 08. September 2016 11:56
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Formbuilder: Bild hochladen und innerhalb des Mails zeigen
Doch ich schaffe es nicht, hochgeladene Bilder innerhalb des Mails als Bild anzeigen zu lassen diese jedoch nicht als Anhang mitzusenden.
So richtig verstehe ich noch nicht genau, was da passieren soll .
Wenn du ein Bild innerhalb einer Mail anzeigen lassen möchtest, muss es grundsätzlich angehangen werden. Ansonsten würde die Mail nicht vollständig angezeigt, wenn das Gerät, auf dem die Mail gelesen/angezeigt wird, im Offline-Modus ist.
Ansonsten wäre lediglich denkbar, dass Bild zwar hochladen und auf dem Server speichern zu lassen, aber in der Mail einen Link auf diese Datei zu platzieren. Ob und wie genau das funktionieren könnte, müsste man dann allerdings noch schauen.
Alternativ ließe sich noch eine Szenerie gestalten, wo das Bild als Data URL in der Mail abgelegt wird. Hätte zur Folge, dass es zwar als Bild angezeigt, aber nicht als Anhang erscheinen würde. Auch hier müsste man bezüglich der Umsetzung mal genauer schauen.
Offline
#3 08. September 2016 13:00
- Gardapro
- probiert CMS/ms aus
- Registriert: 01. April 2011
- Beiträge: 26
Re: Formbuilder: Bild hochladen und innerhalb des Mails zeigen
Genau die Lösung mit der Data-Url bin ich am suchen. Kann man CGSmartImage anweisen das Bild mit base64 einzubetten?
Offline
#4 08. September 2016 13:21
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Formbuilder: Bild hochladen und innerhalb des Mails zeigen
Von NaN habe ich ein Plugin dazu noch auf der Platte:
function.base64_image.php
<?php
#-------------------------------------------------------------------------------
#
# Smarty Plugin : {base64_image}
# Purpose : This plugin returns a base64 encoded image
# Author : Georg Busch (NaN)
# Copyright : 2011 Georg Busch (NaN)
# Version : 1.0
# License : GPL
#
#-------------------------------------------------------------------------------
function smarty_cms_function_base64_image($params, &$smarty)
{
global $config;
$base64_images_path = $config['previews_path'] . DIRECTORY_SEPARATOR . 'base64_images';
if(isset($params['base64_images_path']))
{
$base64_images_path = $config['root_path'] . DIRECTORY_SEPARATOR . $params['base64_images_path'];
}
if(!file_exists($base64_images_path))
{
@mkdir($base64_images_path , 0755, true);
}
$img_path = $config['root_path'] . DIRECTORY_SEPARATOR . $params['dir'];
$base64_img = $img_url = $config['root_url'] . '/' . $params['dir'];
// check for IE
$ie = false;
$ie_version = 0;
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : false;
if( stripos($user_agent,'msie') !== false && stripos($user_agent,'opera') === false ) {
$ie_props = explode(' ',stristr(str_replace(';','; ',$user_agent),'msie'));
$ie_version = preg_replace('/[^0-9,.,a-z,A-Z-]/','',str_replace(array('(',')',';'),'',$ie_props[1]));
$ie = true;
}
//---
$img_formats = array('png','jpg','jpeg','gif');
$filetype = '';
$use_mime = (isset($params['use_mime']) && (strtolower($params['use_mime']) === 'true' || $params['use_mime'] === '1' || $params['use_mime'] === 1 || $params['use_mime'] === true));
if($use_mime)
{
if (version_compare(PHP_VERSION, '5.3.0') >= 0 && function_exists('finfo_open'))
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$filetype = strtolower(finfo_file($finfo, $img_path));
finfo_close($img_path);
}
else if(function_exists('mime_content_type'))
{
$filetype = strtolower(mime_content_type($img_path));
}
}
else
{
$fileinfo = pathinfo($img_path);
if(isset($fileinfo['extension']))
{
$filetype = strtolower($fileinfo['extension']);
}
}
$filetype = str_replace('image/','',$filetype);
if(($ie && $ie_version >= 8) || !$ie )
{
$base64_img_location = $base64_images_path . DIRECTORY_SEPARATOR . base64_encode($img_path) . '_' . basename($img_path);
$base64_img_file_exists = file_exists($base64_img_location);
$img_file_exists = file_exists($img_path) && is_file($img_path) && in_array($filetype,$img_formats);
if($base64_img_file_exists
&& (($img_file_exists && filemtime($base64_img_location) > filemtime($img_path)) || !$img_file_exists)
&& (($ie_version < 9 && filesize($base64_img_location) < 32768) || $ie_version >= 9 || !$ie))
{
$base64_img = file_get_contents($base64_img_location);
}
else
{
@unlink($base64_img_location);
if(file_exists($img_path) && is_file($img_path) && in_array($filetype,$img_formats))
{
$base64_img = 'data:image/'.$filetype.';base64,'.base64_encode(file_get_contents($img_path));
if($fh = fopen($base64_img_location, 'w'))
{
fwrite($fh,$base64_img);
fclose($fh);
}
if($ie && $ie_version < 9 && filesize($base64_img_location) > 32768)
{
$base64_img = $img_url;
}
}
}
}
if(isset($params['assign']))
{
return $smarty->assign($params['assign'], $base64_img);
}
echo $base64_img;
}
?>
Die Funktion muss noch ein wenig angepasst werden, damit der IE nicht berücksichtigt wird. --> Bei IE wurde kein base64 Kodiertes Bild ausgegeben.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#5 09. September 2016 08:01
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Formbuilder: Bild hochladen und innerhalb des Mails zeigen
Kann man CGSmartImage anweisen das Bild mit base64 einzubetten?
Kann man schon, nur sind Module für solche Pippi-Aufgaben oversized .
Von NaN habe ich ein Plugin dazu noch auf der Platte:
Witzig, hatte mich auch gerade damit befasst
https://www.cmsmadesimple.de/forum/view … hp?id=4865
Die Funktion muss noch ein wenig angepasst werden, damit der IE nicht berücksichtigt wird.
Hast du da schon etwas fertig?
Genau das war mir entfallen, da IE de facto nie nutze...
@Gardapro Damit das aber wunschgemäß funktioniert, müsste man wohl einen Modifikator daraus machen, der das im Text eingebettete Bild erkennt, in Data URLs umwandelt und das Original ersetzt (Stichwort Regex).
Offline
Seiten: 1