PHP ZendFramework und kleine Fragen

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.327
Hallo Freunde der Kunst...
Ich hoffe mal es gibt hier den einen oder anderen, der mir bei dem ZendFramework helfen kann :) Ich habe mir das Framework aus dem Grund runter geladen, weil ich ein Ticketsystem erstellen möchte.

Bitte keine Antworten wie "das gibt es schon, guck Dir XY an!" will ich gar nicht. Gefällt mir nämlich nicht. Ich möchte selbst bauen :)

Weiter zum Thema, ich kann ja nun meine Emails abrufen (IMAP) und FLAGs setzen, aber ich würde ganz gerne auch FLAGs wieder entfernen, das ist eine Kleinigkeit wo es harkt. Und des-weiteren möchte ich gerne Anhänge aus Emails als Dateien verarbeiten und auf meinem Server ablegen, so wie hier im Forum. Ticket öffnen, Datei anklicken und freuen :D

Könnt Ihr mir da Infos geben und helfen? Oder habt Ihr andere Möglichkeiten / Varianten für mein Vorhaben..? Außer vorgefertigte Skritpte wie OTRS, osTicket etc.

Gruß, Domi
 
Deine Frage erkläre mal genauer.. das wäre jetzt so als wenn ich in eine Werkstatt mit dem Auto fahre und sage, "der Motor läuft nicht richtig!" und der KFZ Mechaniker sagt "und was hat das mit KFZ zu tun?" :D
 
Meine Frage bezieht sich einfach darauf, was deine Frage mit dem Zend Framework zu tun hat, denn du nimmst in deiner Frage keinen Bezug zum ZF im Gesamtkontext oder ein ZF-Modul in einzelnem.

Ich bin eben ZF-Entwickler und hätte mich gefreut zu helfen, aber du stellst weder eine direkte Frage zum ZF noch eine Frage bei der man dir wirklich helfen kann:
  • Warum hakt es wo?
  • Welche Möglichkeiten sollen wir die als Ersatz vorschlagen? Du hast ja schon einen Workflow vorgegeben.
 
Ach so... Okay, sorry... Dann hab ich mich doof ausgedrückt, dann versuche ich es mal genauer zu erklären. Vergessen wir mal mein Vorhaben bezüglich Ticket, was ich da erwähnt habe.

Ich habe mir eine kleine Ausgabefunktion gebaut (ich taste mich ran), diese funktioniert auch... Eine Verbindung zu meinem Postfach mit "new Zend_Mail_Storage_Imap()" existiert auch. Mit "$mail->countMessages()" bekomme ich auch die Anzahl der Emails ausgegeben, die sich in dem Ordner befinden. Soweit auch kein Problem, denke ich...

Ich habe mir dann meine kleine Ausgabe ein wenig weiter gebaut, um zu sehen was WANN passiert...
PHP:
$message = $mail->getMessage(1);
$part = $message;
while($part->isMultipart()) {
 $part = $message->getPart(1);
}
echo "<b>".$message->subject."</b><br />\n";
foreach($flags as $flag) {
 echo "Flag: ".$flag."<br />\n";
}
echo "Am: ".$xmail->dateTime($message->date)."<br />\n";
$xmail->mail->setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN));

echo filterContent($part->getContent())."<br /><br />\n";
So, meine Email wird auch ausgegeben... der Filter den ich um den Content gebaut habe, filtert alles ab Signatur "-- " weg und gibt mir nur den ersten Teil aus :)

Was mich jetzt mal interessiert, mit dem Befehle "setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN));" kann ich sagen, dass eine Email als "gelesen" markiert werden soll. Gibt es auch eine Möglichkeit, dieses wieder rückgängig zu machen? Das gleiche betrifft ja auch "FLAG_DELETED" ob man das auch rückgängig machen kann.

Wie im Thunderbird auch, klicke ich eine Email an ist sie markiert als "seen", und gibt es auch so etwas wie "unseen"?

Und, wenn eine Email "isMultipart()" ist, lasse ich mir ja nur part1 ausgeben.. der ist ja regulär der Text einer Email. Wenn aber ein Anhang (Attachment) an der Email hängt, wie kann ich das denn ausgeben lassen? :)

So... ich hoffe jetzt ist es ein Bisschen verständlicher, was mein Anliegen ist.
Gruß, Domi

p.s. Ich befasse mich im Moment mit diesem Teil von Zend, Lesen von Mail Nachrichten
 
Domi83 schrieb:
Was mich jetzt mal interessiert, mit dem Befehle "setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN));" kann ich sagen, dass eine Email als "gelesen" markiert werden soll. Gibt es auch eine Möglichkeit, dieses wieder rückgängig zu machen? Das gleiche betrifft ja auch "FLAG_DELETED" ob man das auch rückgängig machen kann.
UNSEEN:
Undelete müsste dann denke ich analog zu dem Unseen funktionieren, also Flag deaktivieren und dann Flags speichern.

Domi83 schrieb:
Und, wenn eine Email "isMultipart()" ist, lasse ich mir ja nur part1 ausgeben.. der ist ja regulär der Text einer Email. Wenn aber ein Anhang (Attachment) an der Email hängt, wie kann ich das denn ausgeben lassen? :)
http://macfoo.wordpress.com/2009/06/10/save-an-email-attachment-using-zend-mail/



und das nächste Mal bitte vorher selbst googlen, das waren jeweils die ersten Treffer zu "zend mail unseen" und "zend mail imap attachment".
 
und das nächste Mal bitte vorher selbst googlen, das waren jeweils die ersten Treffer zu "zend mail unseen" und "zend mail imap attachment".
Wow wow wow.. :mad:
Auf solche scheiß Sätze kann ich gar nicht. Ich habe google gefragt, ich habe sogar im Zend Forum angefragt, sogar die APIdoc habe ich durch gesucht (ja ja, ich kann sogar lesen!), und trotzdem habe ich nicht das gefunden was mir hilft.

Das jeder in den Foren heutzutage immer glaubt, dass man kein google verwendet hat bevor man fragt... einfach mal Antwort geben und gut. :rolleyes:

Trotzdem danke für die Links, ich werde es ausprobieren...
Gruß, Domi

Nachtrag: brr.. genau das ist es, "RECENT" hilft nämlich nicht, sobald der eingebaut ist, macht das gesamte Skript STOP! Aber ich habe da eine Idee, dazu aber mehr.. nach der Mittagspause :)
 
Zuletzt bearbeitet:
Domi83 schrieb:
Wow wow wow.. :mad:
Auf solche scheiß Sätze kann ich gar nicht. Ich habe google gefragt
ich weiß, dass solche Sätze ungern gehört werden, aber ich konnte eben die möglichen Antworten in unter 60 Sekunden ergooglen.

Domi83 schrieb:
ich habe sogar im Zend Forum angefragt
Tatsache :D
Na in den MFS-Bereich schau ich da nur seltenst rein.
 
ice-breaker schrieb:
ich weiß, dass solche Sätze ungern gehört werden, aber ich konnte eben die möglichen Antworten in unter 60 Sekunden ergooglen.
Joa, und ich habe seit vorgestern gesucht, sogar eine Anfrage gestellt, weiter probiert, die Manuals + APIdoc gelesen, und sogar die .php Dateien durchsucht, welche Optionen sich in den Dateien befinden ;)

ice-breaker schrieb:
Tatsache :D
Na in den MFS-Bereich schau ich da nur seltenst rein.
Jep.. aber gut, kommen wir zu der Thematik zurück :)

"$mail->setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN))" ist ja nun schon eine Möglichkeit die ich mit senden kann, ich habe statt SEEN einfach mal ANWERED oder FLAGGED gemacht. Sobald ich das setze, macht er automatisch (keine Ahnung warum) das SEEN weg. Man kann sich das ungefähr so vorstellen,
- FLAG_ANSWERED = ANSWERED 1, SEEN 0
- FLAG_FLAGGED = FLAGGED 1, SEEN 0

Damit will ich aussagen, setze ich einen Status (Answered, Deleted, Flagged...), entfernt er die anderen flags. Will ich also eine Email als "beantwortet", "markiert" und "gesehen" markieren, muss ich folgendes eintragen...
PHP:
$mail->setFlags(1, array(Zend_Mail_Storage::FLAG_ANSWERED, Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_SEEN));
Habe es eben selbst ausprobiert. Das sagt mir also eins, ich sollte regulär immer erst prüfen welche flags gesetzt sind, und dann mit dem neuen erweitern. So kann ich dann mehrere flags gleichzeitig setzen. Da "RECENT" bei mir immer zu einem Fehler geführt hatte, und mir mein Apache auch eine Fehlermeldung ausspuckt, habe ich jetzt "PASSED" verwendet :)

Nun muss ich nur noch die Datei-Anhänge selektieren und speichern :D
Gruß, Domi

Nachtrag1: Okay, jetzt kommt das Problem mit dem Anhang.. Ich habe mir einmal eine Email mit Anhang zugesendet und einen Text rein geschrieben :) Das Spielchen sieht so aus,
PHP:
if($part->isMultipart()) {
 $part = $body->getPart(1);
 echo filterContent($part->getContent())."<br />\n";
}
echo "<br />\n";

if($part->isMultipart()) {
 $part = $body->getPart(2);
 echo "Name: ".$part->getHeader('content-description')."<br />\n";
}
führe ich diesen nun aus, scheint er den Parameter "content-description" nicht zu kennen. Apache gibt mir im error.log die Meldung "no Header with Name content-description or content-description found" zurück. Hat sich da vielleicht etwas geändert? :)

Nachtrag2: Ich hab es jetzt mit ein wenig basteln gelöst :)
PHP:
function filterName($in) {
 $in = preg_replace("/(.*?)name=\"(.*?)\"/", "$2", $in);
 $in = trim($in);
 return $in;
}

if($part->isMultipart()) {
 $part2 = $body->getPart(2);
 echo "Name: ".filterName($part2->getHeader('content-type'))."<br />\n";
}
Mit "preg_replace()" bin ich noch nicht so fit, aber es funktioniert :)
 
Zuletzt bearbeitet:
Zurück
Oben