Autor Zpráva
Asuba
Profil
mám na svém webu udělanou diskusi, kde pokud si uživatel nastaví může dostávat nové příspěvky e-mailem, a chtěl bych se zeptat jestli jde nějak udělat aby když na nějakou adresu odpoví, aby se to nějak poslalo na tu stránku jako další příspěvek
SwimX
Profil
Asuba:
myslím si, že dost dobře to udělat nejde, ty vlastně chceš kontrolovat poštu -> a emaily některé posílat zpět na svě stránky. To by nemělo jít, je to zásah do soukromí emailové schránky.

Udělej, že když dostane příspěvek emailem, tak že to bude jakoby od (info@blaaa...) a první věta: Na tento email neodpovídejte.
text příspěvku
odkaz: odpovězte zde: www.diskuse.....?odpoved=1254
imploder
Profil
SwimX
myslím si, že dost dobře to udělat nejde, ty vlastně chceš kontrolovat poštu -> a emaily některé posílat zpět na svě stránky. To by nemělo jít, je to zásah do soukromí emailové schránky.
Já jsem to pochopil jinak: že chce, aby uživatel mohl odpovědět na nové příspěvky, co mu přišly do schránky, přímo e-mailem a ta odpověď se pak zobrazila v diskusi. To by šlo udělat a připadá mi to jako dobrý nápad. Nové příspěvky se budou odesílat na e-mail z nějaké centrální adresy, např. nove@diskuse.net; pak bude stačit sledovat odpovědi na tu adresu a vkládat je do diskuse.

Bude potřeba vyřešit správnou identifikaci uživatele a vlákna u každé odpovědi - možná by šly na to nějak využit hlavičky e-mailu. Ověřit identitu uživatele jenom z odeslaného e-mailu bude oříšek, v e-mailu totiž může kdokoliv tvrdit cokoliv (a hlavičky nastavit jakékoliv, pokud ví jak). Využil bych právě toho "pokud ví jak". Třeba takto:
- při odeslání e-mailu s novým příspěvkem uživateli sledujícímu vlákno se na serveru uloží náhodný identifikační klíč identifikující toho uživatele a to vlákno; ten klíč se vloží do e-mailu (nějak skrytě, aby nerušil, ale zároveň se musí automaticky vrátit v odpovědi - bude to takhle fungovat, když se dá do hlavičky?)
- když uživatel odpoví, v odpovědi bude ten klíč a podle toho diskusní server pozná, že je to opravdu on, kdo ten e-mail poslal
Tasartir
Profil
Spíš než otázku zabezpečení identity uživatelů (která je taky důležitá, a není dobré ji podceňovat) jsem nabyl dojmu, že tazatel ani neví, zda a jakým způsobem je možné zpracovávat příchozí maily. V PHP jsou na to imap_* funkce, dole jsou uvedeny příklady. Script, který se postará o přečtení nových zpráv by byl v CRONu a spouštěl se v pravidelném intervalu.

Ohledně zabezpečení si dovolím taky předhodit pár nápadů, třeba k něčemu budou:
- generovat pro každého uživatele+vlákno unikátní klíč, který by byl v hlavičce uveden jako reply adresa. Horší je, že by server musel generovat spoustu dynamických emailových schránek, které by kontroloval, nebo by musel být zřízen emailový koš, kam by chodily všechny zprávy poslané na "neexistující" unikátní adresy. Od takového postupu mě zrazoval technik hostingu, protože hrozí zahlcení schránky při pokusu spammera o rozeslání stovek zpráv na <nahodnyretezec>@example.com.

Technicky méně náročné řešení je poslat unikátní klíč uživatele+tématu jako součást předmětu emailu. Bylo by to obtěžující, ale snad ne tolik.
Nebo klíč umístit do textu emailu, a odesílatel/diskutující by ho použil jako předmět zprávy.
SwimX
Profil
imploder:
Já jsem to pochopil jinak: ...
aha, to mě ani nenapadlo
to vypadá dobře, ale jenom podotknu, že se může stát, že se k emailu dostane řekněme až za další den, a bude odpovídat na otázku, kterou už zodpověděl někdo předtím, za předpokladu, že mu teda celá diskuse nebude chodit na emial, což by mě osobně dost vadilo :)
Ale jinak jako nápad velmi dobré :)
Tasartir
Profil
Napsal SwimX: „... bude odpovídat na otázku, kterou už zodpověděl někdo předtím, za předpokladu, že mu teda celá diskuse nebude chodit na emial, což by mě osobně dost vadilo :)

Diskuze mívají běžně vlastnost sledovat vybraná vlákna. (Tahle není výjimkou.) Nemyslím si že by hrozilo reálné nebezpečí, které jsi popsal. Předpokládám, že když už bude upozornění mailem, tak na všechny příspěvky ve vlákně.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0