content-id (cid) ???

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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.0\n";
          
    $header .= "Content-type: multipart/mixed; boundary=\"Message-Boundary\"\n\n";
        }
        else
        {
          if(
    $mail_modus == "html")
          {
            
    $header .= "Content-Type: text/html\n";
            
    $header .= "Content-Transfer-Encoding: 8Bit\n";
          }
          else
          {
            
    $header .= "Content-Type: text/plain\n";
            
    $header .= "Content-Transfer-Encoding: 8Bit\n";
          }
        }
        return 
    $header;
      }

      function 
    body_begin($mail_modus)
      {
        
    $body "--Message-Boundary\n";

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

        
    $body.= "Content-transfer-encoding: 8Bit\n\n";

        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 "\n\n--Message-Boundary\n";
        
    $body.= "Content-type: $file_type; name=\"$file_name\"\n";
        
    $body.= "Content-Transfer-Encoding: BASE64\n";
        
    $body.= "Content-Disposition: attachment; filename=\"$file_name\"\n\n";
        
    $body.= "$encoded_file\n";
        
    $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 "\n\n-----------\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.0\n";
        
    $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
    Zuletzt geändert von stefansvw; 18.05.2004, 09:29.

  • #2
    Habe noch was wichtiges vergessen,

    es wird HtmlMimeMail benutzt welches in der Applikation eingebunden ist von wo aus eine neue Instanz erstellt wird.

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

    aus der include-Datei:

    PHP-Code:
    // 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> </p><a href=\"http://www.cegedim.de\"><span style=\"color:#AAAAAA; font-size: 9px; font-family: Arial, Helvetica; text-decoration: none;\">Powered by cegedim Deutschland</span></a>";
    if (!empty(
    $text_mail_content) ) $text_mail_content .= "\n\n\n\n\nPowered by cegedim Deutschland - [url]http://www.cegedim.de[/url]";
    $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.cegedim.de[/url])'); 


    // zeigt die Empfängerliste der HTML-Kunden an
    echo $ml_i." : ".$recipient_address

    if (
    $red_data["gender"] == "m"
    $salutation_phrase $loc_lang["salutation_male"]; } 
    else 
    $salutation_phrase $loc_lang["salutation_female"]; }


    if ( ( ( 
    $red_data["mail_format"] == "h" || $red_data["mail_format"] != "t" ) && !empty( $html_mail_content ) )
    || (
    $red_data["mail_format"] == "t" && empty( $text_mail_content ) ) )
    {
    $content eregi_replace"%!subscriber!%"$red_data["nick"], $html_mail_content );
    $content eregi_replace"%!salutation!%"$salutation_phrase$content );
    $content eregi_replace"%!unsubscription_link!%"$us_link.$recipient_address$content );
    $mail->setText(null);
    $mail->setHtml($contentnullnull);
    echo 
    " (HTML) ";
    } else
    if ( !empty( 
    $text_mail_content ) ) 
    {
    $content eregi_replace"%!subscriber!%"$red_data["nick"], $text_mail_content );
    $content eregi_replace"%!salutation!%"$salutation_phrase$content );
    $content eregi_replace"%!unsubscription_link!%"$us_link.$recipient_address$content );
    $mail->setText($content);
    $mail->setHtml(nullnullnull);
    echo 
    " (TXT) ";


    // du hast mail!
    $sent $mail->send(array($recipient_address), $sendmail_mode );

    if ( 
    $sent )
    {
    echo 
    {$loc_lang["message_sent"]}<br>";
    $sent_mails++;
    }
    else
    {
    echo 
    {$loc_lang["err_message_not_sent"]}<br>"


    // speichere current counter
    $fh fopen"mailqueue/".$xid.".log""w" );
    fputs$fh$counter );
    fclose($fh); $counter++;
    }
    $ml_i++;



    }
    else 
    {
    echo 
    "[$ml_i] : {$loc_lang["skipped_as_sent"]} <br>";
    $ml_i++;
    }

    $ml->get_next_entry($red_data);
    flush();
    $i++;

    } while (
    $i <= $num_entries);

    @
    unlink "mailqueue/".$xid.".html" );
    @
    unlink "mailqueue/".$xid.".txt" );
    @
    unlink "mailqueue/".$xid.".log" );

    $pattern = array();
    $pattern["xid"] = $xid;
    $pos $ql->find_entry$pattern );
    $ql->delete$pos );

    unset( 
    $_SESSION["ed_html_mail_content"] );
    unset( 
    $_SESSION["ed_text_mail_content"] );
    unset( 
    $_SESSION["ed_mail_subject"] );
    unset( 
    $_SESSION["ed_mail_format"] );
    unset( 
    $_SESSION["ed_timeout"] );
    unset( 
    $_SESSION["ed_groups_selected"] );
    unset( 
    $_SESSION["archive_entry"] );

    echo 
    "<p>$sent_mails {$loc_lang["mails_sent"]}!</p>";
    }

    switch (
    $do)
    {
    case 
    "overview" show_overview(); 
    break;
    case 
    "enqueue" enqueue_mail(); 
    break;
    case 
    "unqueue" unqueue(); 
    break;
    case 
    "send" start_sending(); 
    break;
    }


    ?> 

    Kommentar


    • #3
      Welcome!

      das ist wunderbar viel quellcode. Allerdings lieferst du absolut keinen ansatzt. Den ganzen nachzuvollziehen würde in etwa dem neuschreiben einer des scriptes nahe kommen.

      Kommentar


      • #4
        @TobiaZ
        Vielleicht hilft ja dies GlasKugel
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          Original geschrieben von Günni
          @TobiaZ
          Vielleicht hilft ja dies GlasKugel
          aber auch nur, wenn jeder mod, admin und user mit sternchen jeweils ein 10er pack glaskugeln bestellt.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            will eigentlich nur Bilder in eine Mail einbinden und habe dazu den Code wo die HtmlMimeMail-Instanz erzeugt wird eingebunden und frage mich nur wie ich content-id zum umwandeln in cid:\56525676162 einbinden kann.

            z.B.:
            PHP-Code:
            $body.= "Content-ID: <".$cid.'_'.( ++$x )."@makeMIMEembed>\n"

            Kommentar


            • #7
              @Abraxax
              Vielleicht bekommt man dann ja einen Massenrabatt?!
              mfg
              Günni


              Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
              Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
              Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
              City-Tiger - Online durch die Straßen tigern...

              Kommentar


              • #8
                na im dumme Antworten geben seit ihr ja prima. Bringt auch einer mal was technisches rüber ?

                Kommentar


                • #9
                  wie gesagt, es ist zwar klar, was du willst (emails mit bildern versenden) aber kann ich absolut keinen Ansatz in deinen Posts entdecken. Und alles durchparsen kommt aus den genannten Gründen nicht in Frage.

                  Kommentar


                  • #10
                    Original geschrieben von Günni
                    @Abraxax
                    Vielleicht bekommt man dann ja einen Massenrabatt?!
                    um den rabatt zu bekommen, müssten wir 10.000 10er packete bestellen, wenn wir 0.25% rabatt haben wollen ....

                    Original geschrieben von stefansvw
                    na im dumme Antworten geben seit ihr ja prima. Bringt auch einer mal was technisches rüber ?
                    wo bitte sind die antworten dumm?

                    du solltest dir mal die verschiedenen posts ansehen, welche sich mit der implementation von bildern in eine html-mail beschäftigen.

                    und sage nicht, dass du nichts finden konntest. das wäre eine lüge.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      @TobiaZ

                      wie würdest du vorgehen wenn Du eine Newsletterapplikation hast, welche die Mails mit HtmlMimeMail verschickt aber alles richtig codiert bis auf das die Bilder alle im Internet liegen müssen anstatt sie mit cid (welches HtmlMimeMail auch kann) zu konvertieren und somit anzuhängen ?

                      Ich habe hier die zwei Dateien aufgelistet in denen HtmlMimeMail eingebunden werden und somit verschickt werden.

                      Noch ein klein wenig Code lässt dich auch einsehen in welcher Possition diese HTMLMimeMail cid auch sucht und versucht zu konvertieren.

                      PHP-Code:
                      /**
                      * Funktion für das Extrahieren von Bildern von der HTML Quelle.
                      * Diese Funktion schaut durch den HTML Code, der durch add_html()
                      * geliefert wird und findet jede mögliche Eintragung, die mit 
                      * einer der Verlängerungen endet, die in # image_types $$obj->definiert werden.
                      * Wenn die Eintragung besteht, liest bettet sie sie ein, (nicht ein Zubehör).
                      **/

                          
                      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);
                                      }
                                  }
                              }
                          }

                      /**
                      * Fügt ein Bild der Liste der eingebetteten Bilder hinzu
                      */

                          
                      function addHtmlImage($file$name ''$c_type='application/octet-stream')
                          {
                              
                      $this->html_images[] = array(
                                                              
                      'body'   => $file,
                                                              
                      'name'   => $name,
                                                              
                      'c_type' => $c_type,
                                                              
                      'cid'    => md5(uniqid(time()))
                                                          );
                          }


                      /**
                      * Fügt ein HTML Bild subpart to a mime_part object
                      */
                          
                      function &_addHtmlImagePart(&$obj$value)
                          {
                              
                      $params['content_type'] = $value['c_type'];
                              
                      $params['encoding']     = 'base64';
                              
                      $params['disposition']  = 'inline';
                              
                      $params['dfilename']    = $value['name'];
                              
                      $params['cid']          = $value['cid'];
                              
                      $obj->addSubpart($value['body'], $params);
                          } 

                      ja ich weiß schon wieder Code aber wie soll ich es Euch erklären ?

                      Kommentar


                      • #12
                        Original geschrieben von stefansvw
                        ja ich weiß schon wieder Code aber wie soll ich es Euch erklären ?
                        mit worten natürlich.

                        ich habe auch keine lust und keinen nerv, mich in den code einzuarbeiten.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          OK:

                          kurz und präzise wie kann ich Bilder in einer Mail in cid konvertieren ???

                          Kommentar


                          • #14
                            kurze und präzise antwort.....
                            Original geschrieben von Abraxax
                            du solltest dir mal die verschiedenen posts ansehen, welche sich mit der implementation von bildern in eine html-mail beschäftigen.

                            und sage nicht, dass du nichts finden konntest. das wäre eine lüge.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Habe nichts gefunden was mir für meine App weiterhilft nur dies

                              // now we add attachments (images, etc)
                              $message .= "------=MIME_BOUNDRY_main_message\n";
                              $message .= "Content-Type: image/gif; \n name=\"some_picture.gif\"\n";
                              $message .= "Content-Transfer-Encoding: base64\n";
                              $message .= "Content-ID: <some_picture>\n";
                              $message .= "\n";

                              und einige Post wo du auf die suche verweißt @Abraxax
                              das ist wohl deine stärke

                              Kommentar

                              Lädt...
                              X