logi sisse meist KKK

Kas keegi teab, kuidas saaks IMAP-iga gruppeerida Reply-ga vastatud kirjad? Umbes nagu gmailis. Mailid mis on replyga pendeldanud edasi-tagasi, saaks kokku koguda.

Uurisin katsetasin imap_headerinfo() -st saadavaid muutujaid, aga paistab et, ükski neist ei sobi.

Üks võimalus oleks genereerida subject väljale mingi oma kood ja loota et, kasutajad seda muutma ei hakka.

Või, kas on maili sisse ka võimalik mingi oma kood genereerida? Kuhugi headerisse vms.(kui IMAP-iga saadan)

küsitud Aug 29 '11 at 18:26

curate's gravatar image

curate
9455


See on jälle üks koht, kus lööb välja, et PHP on kokku häkitud, mitte kuidagi süstemaatiliselt projekteeritud asi: imap_mail_compose() teeb terve meili koos päiste ja sisuga ja imap_append() salvestab selliseid hea meelega, aga imap_mail() tahab kolmanda parameetrina saada ainult meili keha. Kui seal on juhtimisi ka päised sees, siis need saavad lihtsalt tekstiridadeks meili kehas ja "puuduvad" päised genereerib imap_mail() ise uuesti.

Minimaalne hädapärast töötav lahendus oleks:

$head = array("message_id" => $id, "subject" => $subject, "from" => $from, "to" => $to);
$body = array(1 => array("type" => "text", "subtype" => "plain", "contents.data" => "..."));
$mesg = imap_mail_compose($head, $body);
// saatmiseks lammutame meili kaheks
list($xhead, $xbody) = explode("\r\n\r\n", $mesg, 2);
imap_mail($to, $subject, $xbody, $xhead);
// aga salvestamiseks ei lammuta
imap_append($imap, $serv . "INBOX", $mesg);

aga see pole ka veel päris ilus, sest nii satuvad väljasaadetavasse meili mõned topelt päiseread, mida seal ei peaks olema ja mis võivad mõnes saajas segadust tekitada.

Korralikuma tulemuse saamiseks peab veel natuke häkkima:

$head1 = array("message_id" => $id);
$head2 = array("message_id" => $id, "subject" => $subject, "from" => $from, "to" => $to);
$body = array(1 => array("type" => "text", "subtype" => "plain", "contents.data" => "..."));
// saatmiseks teeme osaliste päistega meili ja siis lammutame selle kaheks ka
$mesg = imap_mail_compose($head1, $body);
list($xhead, $xbody) = explode("\r\n\r\n", $mesg, 2);
imap_mail($to, $subject, $xbody, $xhead);
// salvestamiseks teeme kõigi päistega meili ja seda ei lammuta
$mesg = imap_mail_compose($head2, $body);
imap_append($imap, $serv . "INBOX", $mesg);
link

vastatud Sep 02 '11 at 22:04

Ahto%20Truu's gravatar image

Ahto Truu ♦♦
6596711

edited Sep 02 '11 at 22:07

Tänud Ahto, asi hakkab selgeks saama, sellest oli abi.

(Sep 04 '11 at 16:11) curate

Selle unikaalse koodi genereerib iga viisakas meiliserver.

Näiteks vastav päiserida ühest mul arhiivis olevast meilist (meil A):

Message-ID: <4D357FD1.1090302@ut.ee>

Viisakad meilikliendid panevad ka vastamisel kirja, millele vastati.

Näiteks vastav päiserida meilist (meil B), mis saadeti eelmisele vastuseks:

In-Reply-To: <4D357FD1.1090302@ut.ee>

Ja kui vahepeal on mõni In-Reply-To kaduma läinud, siis võib veel olla võimalik teema kokku kleepida kaugemate sugulussidemete kaudu.

Juba eelnimetatud meil A oli tegelikult vastus ühele veel vanemale ja nii ongi meilis B lisaks juba näidatud In-Reply-To päisereale ka

References: <4D2EA419.7040408@ut.ee>, <4D357FD1.1090302@ut.ee>

Siin <4D357FD1.1090302@ut.ee> on meil A identifikaator ja <4D2EA419.7040408@ut.ee> selle oma, millest kogu diskussioon alguse sai.

Palju põhjalikum kirjeldus meiliformaadi kohta on RFC 5322, milles Message-ID, In-Reply-To ja References väljade kasutamist täpsustab lõik 3.6.4

Igaks juhuks mainin, et nende päiseridade kättesaamiseks PHPs tasub vaadata imap_headerinfo funktsiooni.

link

vastatud Aug 30 '11 at 01:24

Ahto%20Truu's gravatar image

Ahto Truu ♦♦
6596711

Tänud Ahto! Jah nii paistab toimivat. (kui kasutajast kasutajale saata) Aga mul on vaja vestlus ja mõned muud andmed andmebaasi salvestada. Plaan on selline:

Kui see nüüd väga rappa jookseb, siis soovitused on teretulnud :)

1) kasutaja A sisestab lehel kommentaari (to:, from: ...) jms. andmed salvestatakse andmebaasi.

2) Sisestatud kommentaari meilin kasutajale B aadressilt system@X.ee, meilin imap_mail() funktsiooniga. Siinkohal oleks vaja saadetud maili ID salvestada või "INBOX.Sent" kausta tõsta, paistab et automaatselt see ei toimi.

3) Kasutaja B saadab saadud maili replyga tagasi, aadressile system@X.ee

4) Sisu salvestan andmebaasi, teen uue maili imap_mail_compose(), lisan vajalikud päised In-Reply-To, References ja meilin kasutajale A

link

vastatud Aug 31 '11 at 11:59

curate's gravatar image

curate
9455

Olen jälle tupikus, nimelt kui teen:

imap_mail-compose() teen e-maili

imap_append() tõstan maili 'Sent' kausta

imap_mail() saadan e-maili teele

Kõik toimib, väljaarvatud tehtud e-mailil puudub message_id (sellel mille sent kausta tõstsin). oletasin et message_id genereeritakse automaatselt serveri poolt.

Küsimus oleks, kuidas idenfitseerida imap_mail()-ga saadetud kirja?

link

vastatud Aug 31 '11 at 14:11

curate's gravatar image

curate
9455

Ma spekuleerin, et server tekitab Message-ID välja sel hetkel, kui meil ära saadetakse. Siis muidugi enne saatmist salvestatud lokaalses koopias seda välja veel ei ole.

Kui PHP's pole võimalust saadetud meili pärast saatmist salvestada, tasub proovida ise Message-ID genereerida juba enne saatmist ja vaadata, kas server siis seda kasutab.

link

vastatud Sep 01 '11 at 10:49

Ahto%20Truu's gravatar image

Ahto Truu ♦♦
6596711

Jah, paistab et message-ID genereeritakse saatmisel, see on olemas nii saadetud kui saadud mailidel.

Dokumentatsiooni järgi peaks saama imap_mail_compose() -ga lisada nii "message_id" kui ka "custom_headers". Proovisin mõlemaid lisada, imap_fetchheader()-iga peaks ka custom_header-sid kätte saama, Aga ei saa, tühi massiv.

Pole kuskilt mingit talutavat näidet ka leidnud. Võimalik et genereerin headereid mingis vales järjekorras või standardist mööda.

link

vastatud Sep 02 '11 at 00:06

curate's gravatar image

curate
9455

Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×1
×1

küsitud: Aug 29 '11 at 18:26

nähtud: 3,270 korda

viimati uuendatud: Sep 04 '11 at 16:11

Sarnased küsimused

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee