SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.05.2004, 11:18:10
stefansvw stefansvw ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 4
content-id (cid) ???

Hallo,

habe folgende Frage an Euch und hoffe das Ihr mir eine Lösung anbieten könnt.

Möchte per PHP Newsletter verschicken aber nur wenn alle Bilder des Newsletters in die Email eingebunden werden also per cid.

Wie kann ich das realisieren ?

Es wird dafür htmlMimeMail in Verbindung mit einer mail_function benutzt.

Der Sourcecode dieser mail_function selbst sieht bisher so aus:
Es funktioniert ja alles gut bis halt auf die Bilder :-(

PHP-Code:
<?php
class mail_class
{
  function 
header($mail_modus$attachment$attachment_file)
  {
    global 
$options;

    
$header "From: $options[name_mail] <$options[email]>n";
    
$header .= "Return-Path: <$options[email]>n";

    if(
$attachment && $attachment_file)
    {
      
$header .= "MIME-version: 1.0n";
      
$header .= "Content-type: multipart/mixed; boundary="Message-Boundary"nn";
    }
    else
    {
      if(
$mail_modus == "html")
      {
        
$header .= "Content-Type: text/htmln";
        
$header .= "Content-Transfer-Encoding: 8Bitn";
      }
      else
      {
        
$header .= "Content-Type: text/plainn";
        
$header .= "Content-Transfer-Encoding: 8Bitn";
      }
    }
    return 
$header;
  }

  function 
body_begin($mail_modus)
  {
    
$body "--Message-Boundaryn";

    if(
$mail_modus == "html"$body.= "Content-type: text/html; charset=iso-8859-1n";
    else 
$body.= "Content-type: text/plain; charset=iso-8859-1n";

    
$body.= "Content-transfer-encoding: 8Bitnn";

    return 
$body;
  }

  function 
body_end($file_name$file_type)
  {
    
$file_size filesize($file_name);

    
$fp fopen($file_name"r");
    
$contents fread($fp$file_size);
    
$encoded_file chunk_split(base64_encode($contents));
    
fclose($fp);

    
$body "nn--Message-Boundaryn";
    
$body.= "Content-type: $file_type; name="$file_name"n";
    
$body.= "Content-Transfer-Encoding: BASE64n";
    
$body.= "Content-Disposition: attachment; filename="$file_name"nn";
    
$body.= "$encoded_filen";
    
$body.= "--Message-Boundary--n";

    return 
$body;
  }

  function 
attachment_message($mail_modus$file_name$file_type$message)
  {
    
$message $this->body_begin($mail_modus) . $message $this->body_end($file_name$file_type);

    return 
$message;
  }

  function 
removal_direction($mail_modus)
  {
    global 
$options;

    if(
$_POST["mail_modus"] == "html"$direction "<br>n<br>n-----------<br>n" str_replace("{firstnews}""<a href="". $options["url"] . "" target="_blank">" $options["url"] . "</a>"nl2br($options["remove_notice"]));
    else 
$direction "nn-----------n" str_replace("{firstnews}"$options["url"], $options["remove_notice"]);

    return 
$direction;
  }

  function 
simple_textmail()
  {
    global 
$options;

    
$header "From: $options[name_mail] <$options[email]>n";
    
$header .= "Return-Path: <$options[email]>n";
    
$header .= "MIME-Version: 1.0n";
    
$header .= "Content-Type: text/plain; charset="iso-8859-1"n";
    
$header .= "Content-Transfer-Encoding: 7bit";

    return 
$header;
  }


}

?>

Kann mir jemand helfen ????

Danke Euch im vorraus
Mit Zitat antworten
  #2  
Alt 18.05.2004, 11:55:05
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Re: content-id (cid) ???

Zitat:
Original geschrieben von stefansvw
Möchte per PHP Newsletter verschicken aber nur wenn alle Bilder des Newsletters in die Email eingebunden werden also per cid.

Wie kann ich das realisieren ?
Falls die Klasse nicht so will, kannst Du es auch mal mit PEAR probieren:
http://pear.php.net/manual/en/packag...me.example.php

Zitat:
Der Sourcecode dieser mail_function selbst sieht bisher so aus:
Es funktioniert ja alles gut bis halt auf die Bilder :-(
Dann eben so eintragen <img src="http://host/bild.jpg">
Mit Zitat antworten
  #3  
Alt 18.05.2004, 12:05:32
stefansvw stefansvw ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 4
Hey super, schnelle Antwort

also habe nicht ganz ausführlich erklärt. Ich benutze htmlmimemail

http://www.zend.com/codex.php?id=103&single=1

http://ccs.usherbrooke.ca/~ben/mydyn...lMimeMail.html

und habe diese class in eine Datei der Applikation eingebunden.

PHP-Code:
//  -> Post zu mailinglists
        
        // Include des htmlMimeMail class (download latest version on phpguru.org)...
        
require_once( dirname(__FILE__) ."/".PATH_TO_SCRIPT.'modules/classes/htmlMimeMail/htmlMimeMail.php');

        
// verkürzt den Namen durch scriptname
        
$script_path_dummy explode"/"$_SERVER['SCRIPT_NAME'] );
        unset ( 
$script_path_dummycount$script_path_dummy ) - ] );
        
        
$script_path "http://" $_SERVER['SERVER_NAME'] . implode("/",$script_path_dummy );
                

         if (!empty(
$html_mail_content) ) $html_mail_content .= "<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>
&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><a href="
http://www.php.de"><span style="color:#AAAAAA; font-size: 9px; font-family: Arial, Helvetica; text-decoration: none;">Powered by </span></a>";
         
if (!empty($text_mail_content) ) $text_mail_content .= "nnnnnPowered by;
        $us_link = $script_path . "
/" . PATH_TO_SCRIPT . $sign_out_page."?email=";
        $sent_mails = 0;
        
        $red_data = array();
          $num_entries = $ml->entries();
          $i = 1; $ml_i = 1;
          $ml->get_entry(0, $red_data );

          do
          {
              if ($ml_i >= $counter)
              {              
                  $recipient_address = $red_data["
email"];
                  
                  if (eregi( $group_pattern, $red_data["
groups"] ))
                  {
                      
                    if ($red_data["
mode"] == "**") 
                      {
                          echo "
$ml_i".$recipient_address." {$loc_lang["skipped_as_disabled"]}<br>";
                      }
                      else
                      {
                      
                          $mail = new htmlMimeMail();
                        
                        if ($direct_SMTP) 
                        { 
                            $sendmail_mode = "
smtp";
                            $mail->setSMTPParams( $SMTP_hostname, $SMTP_port, $SMTP_helo, $SMTP_auth, $SMTP_auth_username, $SMTP_auth_password );
                        } else 
                        {
                            $sendmail_mode="
mail"; 
                        }
                        
                        // Vorbereiten der Email Kopfzeile
                        $mail->setFrom( $newsletter_title . " 
<$newsletter_email>" );
                        $mail->setReturnPath( $newsletter_email );
                        $mail->setSubject( $subject );
                        $xmailer = "
cegedim Newsletter unsubscribe at" . $script_path . "/" . PATH_TO_SCRIPT . $sign_out_page;
                        $mail->setHeader('X-Mailer', $xmailer );
                        $mail->setHeader('X-WebMailClass', 'HTML Mime mail class ([url]http://www.php.de[/url])'); 
wie mache ich das dieser App klar ?

Geändert von stefansvw (18.05.2004 um 12:09:41 Uhr)
Mit Zitat antworten
  #4  
Alt 19.05.2004, 13:58:02
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von stefansvw
also habe nicht ganz ausführlich erklärt. Ich benutze htmlmimemail
Nein, Du hast das schon ausführlich genug erklärt. Daß Du eine andere Klasse benutzt, hatte ich ebenfalls gelesen. Und da es möglich sein kann, daß htmlmimemail eventuell (ich kenne die Klasse noch nicht) mit 'nem Attachment Probleme haben *könnte*, hatte ich Dir ua. vorgeschlagen, es mal mit der PEAR Klasse zu probieren.

In der Zwischenzeit habe ich mir mal ein paar Emails angeguckt:
Bilder sind dort durchgängig so <img src="http://hostname/bild.jpg"> angegeben.
Mit Zitat antworten
  #5  
Alt 19.05.2004, 14:02:50
stefansvw stefansvw ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 4
ja und genau dies möchte ich ja nicht. Sondern die Grafiken sollen angehängt werden damit es offline jeder lesen kann.

Mein Status ist im Moment dieser:

Ich habe es schon geschafft eine Grafik in cid abzuändern aber halt nicht alle und zwar wie folgt:

PHP-Code:
<?php
$grafik 
$mail->getFile('logo.jpg');
$mail->addHtmlImage($grafik'logo.jpg''image/jpg');
?>
und ich habe mir die Methoden in HtmlMimeMail angeschaut und folgende entdeckt die eine ganze Seite eigentlich extrahieren müsste.

PHP-Code:
<?php
function _findHtmlImages($images_dir)
    {
        
// Build the list of image extensions
        
while (list($key,) = each($this->image_types)) {
            
$extensions[] = $key;
        }

        
preg_match_all('/(?:"|')([^"']+.('.implode('|', $extensions).'))(?:"|')/Ui'$this->html$images);

        for (
$i=0$i<count($images[1]); $i++) {
            if (
file_exists($images_dir $images[1][$i])) {
                
$html_images[] = $images[1][$i];
                
$this->html str_replace($images[1][$i], basename($images[1][$i]), $this->html);
            }
        }

        if (!empty(
$html_images)) {

            
// If duplicate images are embedded, they may show up as attachments, so remove them.
            
$html_images array_unique($html_images);
            
sort($html_images);
    
            for (
$i=0$i<count($html_images); $i++) {
                if (
$image $this->getFile($images_dir.$html_images[$i])) {
                    
$ext substr($html_images[$i], strrpos($html_images[$i], '.') + 1);
                    
$content_type $this->image_types[strtolower($ext)];
                    
$this->addHtmlImage($imagebasename($html_images[$i]), $content_type);
                }
            }
        }
    }
?>
welche durch die Methode setHtml aufgerufen wird oder ????

PHP-Code:
<?php
function setHtml($html$text null$images_dir null)
    {
        
$this->html      $html;
        
$this->html_text $text;

        if (isset(
$images_dir)) {
            
$this->_findHtmlImages($images_dir);
        }
    }
?>
Natürlich habe ich es schon versucht diese function einzubinden und zwar wie folgt:

PHP-Code:
<?php
$mail
->setHtml($contentnullnull);
?>
aber es nutzte nichts es wurden nicht alle sondern nur das oben angegebene Bild logo.jpg in cid gewandelt.

Weiß jemand was ich noch verkehrt mache oder hat jemand eine andere Idee.

Im vorweg: Ich möchte aber gerne keine neuen Klassen ausprobieren sondern bei htmlmimemail bleiben, der das eigentlich umsetzen müsste.

Wenn man alles richtig macht versteht sich ;-)

Gruß
Stefan
Mit Zitat antworten
  #6  
Alt 19.05.2004, 18:46:46
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von stefansvw
ja und genau dies möchte ich ja nicht. Sondern die Grafiken sollen angehängt werden damit es offline jeder lesen kann.

Mein Status ist im Moment dieser:

Ich habe es schon geschafft eine Grafik in cid abzuändern aber halt nicht alle und zwar wie folgt:

PHP-Code:
<?php
$grafik 
$mail->getFile('logo.jpg');
$mail->addHtmlImage($grafik'logo.jpg''image/jpg');
?>
[ ... ]

aber es nutzte nichts es wurden nicht alle sondern nur das oben angegebene Bild logo.jpg in cid gewandelt.
Wenn ich mir die Definition angucke:
PHP-Code:
void addHtmlImagemixed $file, [mixed $name ''], [mixed $c_type 'application/octet-stream']) 
... würde ich es mal mit Arrays versuchen (mixed):

PHP-Code:
$mail->addHtmlImage(array ('bild1.jpg''bild2.jpg'), array('bild1.jpg''bild2.jpg') , array ('image/jpg''image/jpg')); 
Sinngemäß genauso in getFile() :
PHP-Code:
void getFilemixed $filename

Geändert von meikel (†) (19.05.2004 um 18:49:33 Uhr)
Mit Zitat antworten
  #7  
Alt 21.05.2004, 10:52:06
stefansvw stefansvw ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 4
Hallo @meikel,

habe es mit einem assoziativen array schon versucht aber leider ohne Erfolg. Es sagte mir das fopen damit nichts anfangen kann.

Habe es jetzt wie folgt versucht endlich mal mit Erfolg aber umständlich.

PHP-Code:
$grafik1 $mail->getFile('kontakt_l.gif');
$mail->addHtmlImage($grafik1'kontakt_l.gif''image/jpg');
$grafik2 $mail->getFile('kontakt_h.gif');
$mail->addHtmlImage($grafik2'kontakt_h.gif''image/jpg');        
$grafik3 $mail->getFile('kontakt_g.gif');
$mail->addHtmlImage($grafik3'kontakt_g.gif''image/jpg');        
$grafik4 $mail->getFile('kontakt_h.gif');
$mail->addHtmlImage($grafik4'kontakt_h.gif''image/jpg');        
$grafik5 $mail->getFile('kontakt_i.gif');
$mail->addHtmlImage($grafik5'kontakt_i.gif''image/jpg');

usw
Naja dachte halt, daß die function _finfHtmlImage die vorgegebene HTML-Seite selbst nach Bildern die ihr bekannt sind durchforstet und diese dann extrahiert.

Ist nämlich zimmlich nervig und aufwendig von Newsletter zu Newsletter die oben aufgeführten Einträge selbst zu erneuern.

Wenn Du noch eine Idee hast ruhig raus damit.

Aber zuvor vielen Dank für Deine Hilfe

Gruß
Stefan

Geändert von stefansvw (21.05.2004 um 10:55:35 Uhr)
Mit Zitat antworten
  #8  
Alt 21.05.2004, 21:03:12
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von stefansvw
habe es mit einem assoziativen array schon versucht aber leider ohne Erfolg. Es sagte mir das fopen damit nichts anfangen kann.
Das war nur "auf die Schnelle gekritzelt". Den Code der Klasse hatte ich mir nicht so genau angeschau. Scheinbar versteht der Programmierer unter 'mixed' etwas anderes.

Zitat:
Habe es jetzt wie folgt versucht endlich mal mit Erfolg aber umständlich.
Das wäre dann der nächste Vorschlag gewesen.

Zitat:
Naja dachte halt, daß die function _finfHtmlImage die vorgegebene HTML-Seite selbst nach Bildern die ihr bekannt sind durchforstet und diese dann extrahiert.
Methoden, die mit _ beginnen, sind eigentlich privat bzw. intern. Sowas sollte man nicht verwenden.

Zitat:
Ist nämlich zimmlich nervig und aufwendig von Newsletter zu Newsletter die oben aufgeführten Einträge selbst zu erneuern.

Wenn Du noch eine Idee hast ruhig raus damit.
Ja: mit etwas preg_match() die Bilder im HTML File selber finden und die Methoden in einer Schleife bedienen.

btw: eigentlich mag ich HTML Emails absolut nicht und kenne mich deshalb damit auch nicht besonders gut aus. Ich würde einfache Textemails verschicken, die Links auf die entsprechenden Seiten enthalten. Macht weniger Streß und spart Traffic. Denn jeder Browser hat ein "HTML Seite speichern" oä.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:07:36 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt