<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>PHP Gangsta - Der PHP Blog mit Praxisbezug &#187; Zend_Mail</title> <atom:link href="http://www.phpgangsta.de/tag/zend_mail/feed" rel="self" type="application/rss+xml" /><link>http://www.phpgangsta.de</link> <description>Ein PHP Blog mit Themen aller Art. Manchmal vergewaltige ich PHP...</description> <lastBuildDate>Thu, 02 Feb 2012 22:22:51 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Ein paar Zend_Mail Tricks</title><link>http://www.phpgangsta.de/ein-paar-zend_mail-tricks</link> <comments>http://www.phpgangsta.de/ein-paar-zend_mail-tricks#comments</comments> <pubDate>Tue, 05 Apr 2011 07:18:55 +0000</pubDate> <dc:creator>Michael Kliewe</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Zend_Mail]]></category> <category><![CDATA[Zend_Mail_Transport_File]]></category><guid isPermaLink="false">http://www.phpgangsta.de/?p=2479</guid> <description><![CDATA[Wer Mails verschickt, nutzt bei sehr einfachen (Admin) E-Mails meistens die eingebaute mail() Funktion. Sobald es aber darum geht komplexere E-Mails zu versenden wird man wahrscheinlich eine Klasse benutzten, die es einem einfacher macht, Anhänge anzuhängen, einen text/plain und einen text/html Teil mitzusenden, zusätzliche Empfänger zu definieren oder inline-Bilder gleich mit in die Email zu [...]<br/><br/> Ähnliche Artikel:<ol><li><a href='http://www.phpgangsta.de/inline-grafiken-in-html-e-mails-mit-zend_mail-automatisch-versenden' rel='bookmark' title='Inline Grafiken in HTML E-Mails mit Zend_Mail automatisch versenden'>Inline Grafiken in HTML E-Mails mit Zend_Mail automatisch versenden</a></li><li><a href='http://www.phpgangsta.de/linkpool-nummer-6' rel='bookmark' title='Linkpool Nummer 6'>Linkpool Nummer 6</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Wer Mails verschickt, nutzt bei sehr einfachen (Admin) E-Mails meistens die eingebaute <a href="http://de3.php.net/manual/en/function.mail.php" target="_blank">mail()</a> Funktion. Sobald es aber darum geht komplexere E-Mails zu versenden wird man wahrscheinlich eine Klasse benutzten, die es einem einfacher macht, Anhänge anzuhängen, einen text/plain und einen text/html Teil mitzusenden, zusätzliche Empfänger zu definieren oder inline-Bilder gleich mit in die Email zu packen.</p><p>Es gibt dutzende gute Mail-Klassen und Libraries da draußen (<a href="http://incubator.apache.org/zetacomponents/documentation/trunk/Mail/tutorial.html" target="_blank">ezcMail</a>, <a href="http://www.developers-guide.net/c/146-nutzung-der-mail-klasse-htmlmimemail5.html" target="_blank">htmlMimeMail5</a>), ich benutze häufig <a href="http://framework.zend.com/manual/de/zend.mail.html" target="_blank">Zend_Mail</a>. Mit den verschiedenen Zend_Mail_Transport_* Klassen ist es möglich, die Mails über sendmail (sprich über mail()) zu versenden, oder aber beispielsweise mit Hilfe des SMTP-Protokolls an einen SMTP-Server zu übergeben. Seit wenigen Monaten neu ist Zend_Mail_Transport_File, womit die E-Mail nicht versendet wird, sondern &#8220;nur&#8221; in eine Datei geschrieben wird. Ich habe mir früher einen solchen Adapter selbst geschrieben, nun ist er im Zend Framework enthalten.</p><p>Mit diesem Adapter ist es sehr einfach möglich, beispielsweise in der Entwicklungsumgebung keine E-Mails zu versenden, damit nicht aus Versehen beim Testen des Abschickens eines Formulars wirkliche E-Mails versendet werden, sondern nur zu Debuggingzwecken in eine Datei geschrieben wird. Beispielsweise so:</p><p><span id="more-2479"></span><pre class="brush: plain; title: ; notranslate">[production]
;    Config we use for production:
resources.mail.transport.type = smtp
resources.mail.transport.host = &quot;smtp.example.com&quot;
resources.mail.transport.auth = login
resources.mail.transport.username = myUsername
resources.mail.transport.password = myPassword

[development]
;    This options for the dev env:
resources.mail.transport.type = file
resources.mail.transport.path = &quot;/tmp/send&quot; </pre><p>Mit dem Adapter ist es auch möglich, den Mail-Versand zu testen mittels Unit-Tests, der Inhalt der Datei kann dann einfach gegen die erwartete Ausgabe geprüft werden.</p><p>In meinem eigenen Repertoire habe ich noch einen Adapter, mit dem man dieses Schreiben in eine Datei umgehen kann und den generierten E-Mail Quelltext direkt abfragen kann. Auch dieser Adapter kann natürlich gut zu Testzwecken genutzt werden, und man benötigt keinen Speicherplatz/Schreibrechte:</p><pre class="brush: php; title: ; notranslate">&lt;?
class App_Mail_Transport_Null extends Zend_Mail_Transport_Smtp {
    /**
     * DON'T send an email via the SMTP connection protocol
     *
     * @return void
     */
    public function _sendMail()
    {
    }

    public function getSmtpMailSource()
    {
        if (empty($this-&gt;header)) {
            throw new Exception('Mail source could not be returned, you have to call send() first!');
        }

        return $this-&gt;header . Zend_Mime::LINEEND . $this-&gt;body;
    }
}

$transport = new App_Mail_Transport_Null();
$mail-&gt;send($transport);
$messageString = $transport-&gt;getSmtpMailSource();</pre><p>Das Senden von vielen E-Mails wird kompliziert wenn man möglichst schnell möglichst viele E-Mails versenden möchte. Eine der schnellsten Methoden ist es, die generierte E-Mail in eine Datei zu schreiben und dann in das <a href="http://www.postfix.org/pickup.8.html" target="_blank">Pick-Up Verzeichnis des Postfix</a> zu schieben. Dazu kann der oben gezeigte File-Adapter genutzt werden. Falls dieser Weg zu umständlich ist (oder kein Zugriff auf dieses Verzeichnis möglich ist), bleibt nur der Versand über SMTP. Aber auch da gibt es einige feine Unterschiede. Normalerweise wird für jede E-Mail eine eigene TCP/IP Verbindung geöffnet und dann für jede E-Mail ein SMTP-Dialog abgespult. Doch es geht auch effizienter, indem man eine Verbindung wiederbenutzt. Hier erstmal das normale Vorgehen:</p><pre class="brush: php; title: ; notranslate">$tr = new Zend_Mail_Transport_Smtp(&quot;mail.example.com&quot;)
Zend_Mail::setDefaultTransport($tr);

for ($i = 0; $i &lt; 5; $i++) {
    $mail = new Zend_Mail();
    $mail-&gt;setBodyText(&quot;This is the text of the mail. $i&quot;);
    $mail-&gt;setFrom(&quot;sender@example.com&quot;, &quot;Some Sender $i&quot;)
    $mail-&gt;addTo(&quot;recipient@example.com&quot;, &quot;Some Recipient $i&quot;);
    $mail-&gt;setSubject(&quot;Test Subject $i&quot;);
    $mail-&gt;send();
}</pre><p>Besser ist es jedoch so:</p><pre class="brush: php; title: ; notranslate">$tr = new Zend_Mail_Transport_Smtp(&quot;mail.example.com&quot;);
Zend_Mail::setDefaultTransport($tr);

$mail = new Zend_Mail();
for ($i = 0; $i &lt; 5; $i++) {
    $mail-&gt;setBodyText(&quot;This is the text of the mail $i.&quot;);
    $mail-&gt;setFrom(&quot;sender@example.com&quot;, &quot;Some Sender $i&quot;);
    $mail-&gt;addTo(&quot;recipient@example.com&quot;, &quot;Some Recipient $i&quot;);
    $mail-&gt;setSubject(&quot;Test Subject $i&quot;);
    $mail-&gt;send();
}</pre><p>Im zweiten Fall bleibt die Verbindung bestehen, und es wird im SMTP-Dialog einfach ein RSET gesendet und dann die nächste E-Mail verschickt.</p><p>Bei dieser Methode gilt jedoch zu beachten dass viele SMTP-Server die Anzahl der E-Mails, die innerhalb eines SMTP-Dialogs versendet werden dürfen, beschränken.</p> <br/><br/><p>Ähnliche Artikel:</p><ol><li><a href='http://www.phpgangsta.de/inline-grafiken-in-html-e-mails-mit-zend_mail-automatisch-versenden' rel='bookmark' title='Inline Grafiken in HTML E-Mails mit Zend_Mail automatisch versenden'>Inline Grafiken in HTML E-Mails mit Zend_Mail automatisch versenden</a></li><li><a href='http://www.phpgangsta.de/linkpool-nummer-6' rel='bookmark' title='Linkpool Nummer 6'>Linkpool Nummer 6</a></li></ol>]]></content:encoded> <wfw:commentRss>http://www.phpgangsta.de/ein-paar-zend_mail-tricks/feed</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Inline Grafiken in HTML E-Mails mit Zend_Mail automatisch versenden</title><link>http://www.phpgangsta.de/inline-grafiken-in-html-e-mails-mit-zend_mail-automatisch-versenden</link> <comments>http://www.phpgangsta.de/inline-grafiken-in-html-e-mails-mit-zend_mail-automatisch-versenden#comments</comments> <pubDate>Thu, 06 May 2010 07:33:53 +0000</pubDate> <dc:creator>Ralf Eggert</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Content-ID]]></category> <category><![CDATA[HTML Email]]></category> <category><![CDATA[Inline Grafiken]]></category> <category><![CDATA[Zend_Mail]]></category><guid isPermaLink="false">http://www.phpgangsta.de/?p=1335</guid> <description><![CDATA[Ich (Ralf Eggert) stand neulich vor dem Problem, dass ich alle Grafiken in einer HTML E-Mail automatisch als Inline-Images identifizieren und dann an die E-Mail anhängen wollte. Die Grundidee zur Lösung des Problems ist es, mit einem regulären Ausdruck alle Grafiken zu finden und dann entsprechend anzuhängen. Beim Versand gab es ein paar Probleme, die [...]<br/><br/> Ähnliche Artikel:<ol><li><a href='http://www.phpgangsta.de/kein-hexenwerk-smsmms-mit-php-versenden' rel='bookmark' title='Kein Hexenwerk: SMS/MMS mit PHP versenden'>Kein Hexenwerk: SMS/MMS mit PHP versenden</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Ich (<a href="http://blog.zf-info.de/" target="_blank">Ralf Eggert</a>) stand neulich vor dem Problem, dass ich alle Grafiken in einer HTML E-Mail automatisch als Inline-Images identifizieren und dann an die E-Mail anhängen wollte. Die Grundidee zur Lösung des Problems ist es, mit einem regulären Ausdruck alle Grafiken zu finden und dann entsprechend anzuhängen. Beim Versand gab es ein paar Probleme, die ich zusammen mit Michaels Hilfe lösen konnte. Und genau deshalb findet ihr hier nun diesen kurzen Gastbeitrag.</p><p>Der Code unten zeigt ein komplettes lauffähiges Beispiel. Nach der Konfiguration wird auch gleich ein Zend_Mail Objekt erstellt und der HTML Bereich mit Inhalten bestückt. Über preg_match_all und array_filter werden alle Fundstellen in IMG Tags, im BACKGROUND Attribut sowie im Inline-CSS gefunden. Das Array mit den Ergebnissen wird dann durchlaufen. Abhängig davon, ob es sich um Grafiken auf dem Server oder externe Grafiken handelt, wird dann das entsprechende Attachment erstellt.<br /> <span id="more-1335"></span><br /> Zusätzlich muss im HTML Bereich der E-Mail auch jeweils der alte Verweis auf die Grafik durch den Verweis auf das Attachment ausgetauscht werden. Wichtig ist noch, dass der Typ der E-Mail auf Zend_Mime::MULTIPART_RELATED gesetzt wird. Danach kann der Versand erfolgen.</p><p>Ich hoffe, dieses Skript hilft dem einen oder anderen weiter.</p><pre class="brush: php; title: ; notranslate">&lt;?php
set_include_path(implode(PATH_SEPARATOR, array(
	realpath(dirname(__FILE__) . '/library'),
	get_include_path(),
)));

date_default_timezone_set('Europe/Berlin');

require_once('Zend/Loader/Autoloader.php');
$autoloader = Zend_Loader_Autoloader::getInstance();

$mailSender = 'absender@domain.de';
$nameSender = 'Absender';
$mailRecipient = 'empfaenger@domain.de';
$nameRecipient = 'Empfaenger';
$mailSubject = 'Testmail mit inline img';
$htmlBody = '&lt;b&gt;html&lt;/b&gt;&lt;br/&gt;&lt;img src=&quot;sexy-sprite.png&quot;&gt;&lt;br/&gt;
			&lt;table background=&quot;error_messages.png&quot;&gt;&lt;tr&gt;&lt;td&gt;Zelle&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
			&lt;br/&gt;&lt;img src=&quot;http://www.fremdedomain.de/bild2.jpg&quot;&gt;';
$textBody = 'text here';

// build mail
$mail = new Zend_Mail('UTF-8');
$mail-&gt;setFrom($mailSender, $nameSender);
$mail-&gt;addTo($mailRecipient, $nameRecipient);
$mail-&gt;setSubject($mailSubject);

// find images
preg_match_all('^url\((.*)\)|src=&quot;(.*)&quot;|background=&quot;(.*)&quot;^iU', $htmlBody, $imageList);

// combine findings
$imageList = array_filter(array_merge($imageList[1], $imageList[2], $imageList[3]));

// check image list
if (count($imageList) &gt; 0) {
	// loop through image list
	foreach ($imageList as $key =&gt; $value) {
		if (substr($value, 0, 4) == 'http') {
			$filePath = 'img/' . basename($value);
			file_put_contents($filePath, file_get_contents($value));
		} else {
			$filePath = 'img/' . $value;
		}
		$fileName = basename($filePath);
		$fileType = getimagesize($filePath);

		// create attachment
		$att = $mail-&gt;createAttachment(file_get_contents($filePath));
		$att-&gt;type = $fileType['mime'];
		$att-&gt;disposition = Zend_Mime::DISPOSITION_INLINE;
		$att-&gt;encoding = Zend_Mime::ENCODING_BASE64;
		$att-&gt;filename = $fileName;
		$att-&gt;id = md5($att-&gt;filename);

		// change body
		$htmlBody = str_replace($imageList[$key], 'cid:'.$att-&gt;id, $htmlBody);
	}
}

$mail-&gt;setType(Zend_Mime::MULTIPART_RELATED);
$mail-&gt;setBodyText($textBody);
$mail-&gt;setBodyHtml($htmlBody);

$config = array('auth' 	=&gt; 'login',
	'username' 	=&gt; 'absender@domain.de',
	'password' 	=&gt; 'SMTPPASSWORD');
$mail-&gt;send(new Zend_Mail_Transport_Smtp('mail.domain.de', $config));</pre><br/><br/><p>Ähnliche Artikel:</p><ol><li><a href='http://www.phpgangsta.de/kein-hexenwerk-smsmms-mit-php-versenden' rel='bookmark' title='Kein Hexenwerk: SMS/MMS mit PHP versenden'>Kein Hexenwerk: SMS/MMS mit PHP versenden</a></li></ol>]]></content:encoded> <wfw:commentRss>http://www.phpgangsta.de/inline-grafiken-in-html-e-mails-mit-zend_mail-automatisch-versenden/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>IMAP-Emails lesen mit dem Zend Framework</title><link>http://www.phpgangsta.de/imap-emails-lesen-mit-dem-zend-framework</link> <comments>http://www.phpgangsta.de/imap-emails-lesen-mit-dem-zend-framework#comments</comments> <pubDate>Fri, 12 Mar 2010 08:34:52 +0000</pubDate> <dc:creator>Michael Kliewe</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[IMAP]]></category> <category><![CDATA[Zend_Mail]]></category> <category><![CDATA[Zend_Mail_Storage_Imap]]></category><guid isPermaLink="false">http://www.phpgangsta.de/?p=1150</guid> <description><![CDATA[Emails werden nicht nur von Menschen für Menschen geschrieben, sie werden auch häufig zur asynchronen Kommunikation zwischen Rechnern und Programmen eingesetzt. In der Vergangenheit habe ich bereits einige Scripte geschrieben die Emails periodisch abholen und bearbeiten. Darunter waren zum Beispiel Backup-Benachrichtigungen von einem Programm das früher nicht in der Lage war, die Ergebnisse in eine [...]<br/><br/> Ähnliche Artikel:<ol><li><a href='http://www.phpgangsta.de/php-5-3-1-und-zend-framework-bug-hunt-day' rel='bookmark' title='PHP 5.3.1 und Zend Framework Bug Hunt Day'>PHP 5.3.1 und Zend Framework Bug Hunt Day</a></li><li><a href='http://www.phpgangsta.de/php-und-das-zend-framework' rel='bookmark' title='PHP und das Zend Framework'>PHP und das Zend Framework</a></li><li><a href='http://www.phpgangsta.de/nicht-html-responses-mit-dem-zend-framework' rel='bookmark' title='Nicht-HTML-Responses mit dem Zend Framework'>Nicht-HTML-Responses mit dem Zend Framework</a></li></ol>]]></description> <content:encoded><![CDATA[<p>Emails werden nicht nur von Menschen für Menschen geschrieben, sie werden auch häufig zur asynchronen Kommunikation zwischen Rechnern und Programmen eingesetzt.</p><p>In der Vergangenheit habe ich bereits einige Scripte geschrieben die Emails periodisch abholen und bearbeiten. Darunter waren zum Beispiel Backup-Benachrichtigungen von einem Programm das früher nicht in der Lage war, die Ergebnisse in eine Datenbank zu schreiben. Um eine Übersicht über einen Zeitraum zu erhalten muß man die Ergebnisse also per Email in ein Postfach senden lassen und dieses periodisch abrufen und die Emails parsen.</p><p>Ein anderes Script hat zum Beispiel ein Postfach nach Anhängen durchsucht. Dieses Postfach wurde dazu benutzt, Dokumente automatisiert verarbeiten zu lassen. Dazu wurden die Emails geparst, die Anhänge gelöst und dann je nach Absender an einen bestimmten Sachbearbeiter gesendet oder an ein automatisiertes System weitergeleitet bzw. auf ein Netzwerklaufwerk abgelegt.</p><p>Es gibt noch viele weitere Möglichkeiten, wofür Emails nützlich sein können und warum man sie automatisiert verarbeiten sollte.</p><p><span id="more-1150"></span>Früher habe ich diese Arbeit mit den imap_* Funktionen erledigt. Heutzutage nutze ich dafür natürlich die Zend-Framework Klassen Zend_Mail_Storage_Imap und Zend_Mail_Message. Der Zugriff via IMAP ist der POP3-Möglichkeit vorzuziehen, da wir dann z.B. Flags oder Ordner nutzen können um Mails zu markieren/verschieben die gerade in Progress sind bzw. fertig bearbeitet wurden.</p><p>Um eine Verbindung zum Mailserver aufzubauen nutzen wir einfach den Konstruktor:</p><pre class="brush: php; title: ; notranslate">$storage = new Zend_Mail_Storage_Imap(array(
    'host'     =&gt; 'imap.firma.de',
    'user'     =&gt; 'postfach@firma.de',
    'password' =&gt; 'passworthier'));</pre><p>Eine verschlüsselte SSL oder TLS Verbindung ist natürlich auch möglich (hier SSL):</p><pre class="brush: php; title: ; notranslate">$storage = new Zend_Mail_Storage_Imap(array(
    'host'     =&gt; 'imap.firma.de',
    'user'     =&gt; 'postfach@firma.de',
    'password' =&gt; 'passworthier',
    'ssl'      =&gt; 'SSL'));</pre><p>Nachdem die Verbindungsparameter spezifiziert wurden kann man nun auf den Server zugreifen. Als erstes möchten wir uns die Gesamtanzahl der Nachrichten im aktuellen Ordner anzeigen lassen:</p><pre class="brush: php; title: ; notranslate">echo $storage-&gt;countMessages() . ' Nachrichten im Ordner';</pre><p>Mit Hilfe einer foreach-Schleife können wir nun alle Emails durchlaufen. Das ist möglich da das Storage-Object das Iterator-Pattern implementiert:</p><pre class="brush: php; title: ; notranslate">foreach ($storage as $messageNum =&gt; $message) {
    echo 'Email von '.$message-&gt;from.': '.$message-&gt;subject;
}</pre><p>Wie man oben sehen kann werden die Header der Email einfach wie ein public Attribut abgefragt. Das wird intern über die magische __get() Funktion ermöglicht. Man kann aber auch die getHeader() Funktion nutzen, die gerade im Fall von &#8220;besonderen&#8221; Headern wie &#8220;Reply-To&#8221; einfacher einzusetzen ist ($message-&gt;reply-to wäre ungültig).</p><p>Um auf den Inhalt der Email zugreifen zu können nutzt man die getContent()-Funktion:</p><pre class="brush: php; title: ; notranslate">echo $message-&gt;getContent();</pre><p>Da Emails aus mehreren Teilen bestehen können (Textteil, HTML-Teil, Anhänge, Inline-Bilder usw) kann man diese Teile auch untersuchen:</p><pre class="brush: php; title: ; notranslate">$foundPart = null;
foreach (new RecursiveIteratorIterator($message) as $part) {
    try {
        if (strtok($part-&gt;contentType, ';') == 'text/plain') {
            $foundPart = $part;
            break;
        }
    } catch (Zend_Mail_Exception $e) {
        // ignorieren
    }
}
if (!$foundPart) {
    echo 'kein reiner Text-Teil gefunden';
} else {
    echo &quot;Reiner Text-Teil: \n&quot; . $foundPart;
}</pre><p>Auf IMAP-Servern können wir wie bereits erwähnt Emails mit Flags versehen und abfragen.</p><pre class="brush: php; title: ; notranslate">if ($message-&gt;hasFlag(Zend_Mail_Storage::FLAG_FLAGGED)) {
        continue;
}</pre><p>Damit würden wie alle Emails überspringen die geflaggt sind. Flags können wie gesagt dafür genutzt werden um bereits bearbeitete Emails zu markieren.</p><pre class="brush: php; title: ; notranslate">$storage-&gt;setFlags($messageNum, array(Zend_Mail_Storage::FLAG_FLAGGED));</pre><p>Man kann natürlich auch auf einzelne Emails zugreifen:</p><pre class="brush: php; title: ; notranslate">$message = $storage-&gt;getMessage($messageNum);</pre><p>Dabei sollte man jedoch daran denken dass $messageNum die Sequenznummer ist. Wenn eine Email heute die Sequenznummer 3 hat, kann sie morgen schon die Sequenznummer 2 haben wenn Email 1 oder 2 in der Zwischenzeit gelöscht wurde.</p><p>Emails löschen ist auch sehr einfach:</p><pre class="brush: php; title: ; notranslate">$storage-&gt;removeMessage($messageNum);</pre><p>Wie bereits geschrieben kann es dabei zu Verschiebungen der Sequenznummern kommen, es ist also Vorsicht geboten.</p><p>Die Zend-Framework-Klassen sind für die meisten einfachen Aufgaben sehr gut brauchbar. Wenn man allerdings erweiterte Funktionalitäten benötigt muß man die Klasse erweitern. Um einigen Problemen aus dem Weg zu gehen habe ich beispielsweise alle Funktionen erweitert, sodass ich mit UniqueIDs arbeiten kann statt Sequenznummern. Desweiteren sind folgende Funktionen dazugekommen die man des öfteren mal benötigt (für die meisten davon gibt es bereits Issue-Tracker-Einträge, um sie in das Framework aufzunehmen):</p><p>sort() Methode: <a href="http://framework.zend.com/issues/browse/ZF-9138" target="_blank">http://framework.zend.com/issues/browse/ZF-9138</a><br /> search() Methode: <a href="http://framework.zend.com/issues/browse/ZF-8858" target="_blank">http://framework.zend.com/issues/browse/ZF-8858</a><br /> Kopieren mehrere Emails mit einem IMAP-Befehl (nicht copy() in einer Schleife aufrufen): <a href="http://framework.zend.com/issues/browse/ZF-8513" target="_blank">http://framework.zend.com/issues/browse/ZF-8513</a><br /> Flags auf mehrere Emails gleichzeitig setzen (anstatt setFlags() in einer Schleife aufrufen zu müssen): <a href="http://framework.zend.com/issues/browse/ZF-8488" target="_blank">http://framework.zend.com/issues/browse/ZF-8488</a><br /> Mehr Kontrolle über den EXPUNGE Befehl: <a href="http://framework.zend.com/issues/browse/ZF-5655" target="_blank">http://framework.zend.com/issues/browse/ZF-5655</a></p> <br/><br/><p>Ähnliche Artikel:</p><ol><li><a href='http://www.phpgangsta.de/php-5-3-1-und-zend-framework-bug-hunt-day' rel='bookmark' title='PHP 5.3.1 und Zend Framework Bug Hunt Day'>PHP 5.3.1 und Zend Framework Bug Hunt Day</a></li><li><a href='http://www.phpgangsta.de/php-und-das-zend-framework' rel='bookmark' title='PHP und das Zend Framework'>PHP und das Zend Framework</a></li><li><a href='http://www.phpgangsta.de/nicht-html-responses-mit-dem-zend-framework' rel='bookmark' title='Nicht-HTML-Responses mit dem Zend Framework'>Nicht-HTML-Responses mit dem Zend Framework</a></li></ol>]]></content:encoded> <wfw:commentRss>http://www.phpgangsta.de/imap-emails-lesen-mit-dem-zend-framework/feed</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Database Caching 1/39 queries in 0.034 seconds using disk: basic
Object Caching 1163/1209 objects using disk: basic

Served from: www.phpgangsta.de @ 2012-02-08 01:20:31 -->
