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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden |
18.05.2004, 10:18:10
|
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
|
18.05.2004, 10:55:05
|
|
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">
|
18.05.2004, 11:05:32
|
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_dummy[ count( $script_path_dummy ) - 1 ] );
$script_path = "http://" . $_SERVER['SERVER_NAME'] . implode("/",$script_path_dummy );
if (!empty($html_mail_content) ) $html_mail_content .= "<p> </p><p> </p><p> </p><p>
</p><p> </p><p> </p><p> </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 11:09:41 Uhr)
|
19.05.2004, 12:58:02
|
|
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.
|
19.05.2004, 13:02:50
|
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($image, basename($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($content, null, null);
?>
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
|
19.05.2004, 17:46:46
|
|
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 addHtmlImage( mixed $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 getFile( mixed $filename)
Geändert von meikel (†) (19.05.2004 um 17:49:33 Uhr)
|
21.05.2004, 09:52:06
|
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 09:55:35 Uhr)
|
21.05.2004, 20:03:12
|
|
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ä.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:58:15 Uhr.
|