Rules e-mail küldés spec. beállítása

DruTa képe

Üdv!

A Rules-szal beállítottam, hogy bizonyos node feltöltésekor e-mail értesítést küldjön egyes felhasználóknak.

Próbáltam úgyis, hogy adott szerepkörök minden tagjának, és úgy is, hogy egyenként megadva felhasználókat. Itt meg kell jegyeznem, hogy ha két Action van beállítva, akkor az előbbit hajtja csak végre azon címzetteknél, amelyek mindkettő akciban szerepelnek. Nem mintha ez baj lenne, csak megjegyzem.

Szóval azt szeretném, ha a címzettek látnák, hogy rajtuk kívül még kik kapták meg az értesítést, de sajnos nem így tesz és a Helyettesítési minták sem adnak erre lehetőséget.

Van valami trükk, helyettesítési minta, ami nincs megadva, de működne?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Phoere képe

Mivel az kifejezetten kerülendő, hogy az e-mail címzettjei közé vegyél fel több címzettet vagy akár másolati címként tedd be őket, így a levél törzsét kell kiegészítened a címzettek listájával, méghozzá a felhasználó nevekkel - én semmiképpen nem sorolnám fel a címzetek e-mail címeit.
(Kerülendő, mivel potenciálisan kiszolgáltatod az érintett usereket, hogy a címük valamelyik címzetten keresztül spam listára kerüljön, emellett adatvédelmi okok is ellene szólnak).

Erre szinte biztos, hogy nincs vezérjel, én legalábbis nem tudok. Tehát vagy a levél szövegénél a "php kiértékelés"-t választod (amire lehetőséget nyújt a modul, de nem javasolt) vagy írsz egy saját modult és abban saját eseményt/akciót hozol létre és abban programozod le, amire szükséged van.

Az esemény adott, tehát egy új akciót kell létrehozni.

Pl. itt találsz az utóbbihoz segítséget:

http://internetdevels.com/blog/creating-custom-events-and-actions-using-...

0
0

Csökönyi Ferenc

DruTa képe

Szűk kör, ismerik egymást és épp az a cél, hogy tudjanak róla, hogy a másik is megkapta. Más esetben természetesen nem tenném.

Igazából azt szerettem volna tudni, hogy a felsorolt helyettesítési minták az összeset tartalmazzák, vagy van más is, csak nincs leírva?

Ui.: Nincs php kiértékelési lehetőség az akciók megadásánál, legalábbis én nem találom az üzenet mezőnél sem.

0
0
Phoere képe

Engedélyezve van az alapmodulok között a PHP filter?

Egyébként a címzettek is összeállíthatók PHP kiértékeléssel, de én mindenképpen a szövegben sorolnám fel őket, ha a tájékoztatás a cél.

0
0

Csökönyi Ferenc

DruTa képe

Kösz a segítséget egyébként!

Most nincs bekapcsolva a php filter, mert azt írja az infó ott is, hogy veszélyes.

Most ez mit jelent pontosan? Mennyire?

Egyetértek a javaslatoddal, hogy a szövegben legyenek.

Esetleg tudsz mondani egy php kódot, vagy nem csak pár szóból állna?

0
0
Phoere képe

Veszélyes, mert akár veszélyes kódok is betehetők, tehát ezért csak megbízható személynek adhatod meg a jogosultságoknál a használatát - ez nagyon fontos!!!

Emellett ha hibás kódot írsz be, akkor az esemény lefutásakor php hiba jelentkezhet.

A konkrét kód attól függ, hogy végül is hogyan választod ki a userek közül a címzetteket. Egy szerepkör tagjai?

0
0

Csökönyi Ferenc

DruTa képe

Most szerepkörökre gondoltam, de ha nem csak pár szóból áll, akkor ne fáradj vele!

0
0
Phoere képe

Itt van egy elvileg működő kód.

  1. <?php
  2.  
  3. echo "Az alapüzenet szövege\n\n"; // Ide írd be a kiküldendő szöveget
  4.  
  5. $rid = 3; // a választott szerepkör azonosítója
  6.  
  7.  
  8. $query = 'SELECT ur.uid FROM {users_roles} AS ur WHERE ur.rid = :rid';
  9. $result = db_query($query, array(':rid' => $rid));
  10. $uids = $result->fetchCol();
  11. $users = user_load_multiple($uids);
  12. echo "Az üzenetet megkapták:\n\n";
  13.  
  14. foreach ($users as $user) {
  15. echo $user->name . "\n";
  16.  
  17.  
  18. }
  19. ?>
1
-1

Csökönyi Ferenc

DruTa képe

Jaj, ez nagy munka volt, köszönöm!

Nem is tudtam, hogy ilyen hosszú kódot is be lehet tenni.

0
0
DruTa képe

Jut eszembe: ez a kód csak azt közli, hogy még kik vannak a listán, vagy hogy ténylegesen kiknek lett postázva?

0
0
Phoere képe

Ez a kód egyszerűen kilistázza az adott szerepkörbe tartozó felhasználókat, akiknek a Rules elküldi az e-mailt, nem jelent küldési igazolást. De ha jól állítottad be szabályt, akkor a Drupal rendszer át fogja adni szervernek az emailokat küldésre a szerepkör tagjainak email címeire, az pedig a saját ütemezésének megfelelően útnak indítja azokat.

Tehát ha jól állítottad be a szabályt és az email küldést a Drupalban, és jól működik a mail küldés a szerveren, akkor az e-mailok is elmennek ezeknek a felhasználóknak.

0
0

Csökönyi Ferenc

DruTa képe

Értem, kösz a választ.

Jól gondolom, hogy egy így beillesztett kóddal nem oldható meg, hogy a ténylegesen elküldöttekről legyen lista, mert ahhoz az smpt szerverbe is be kéne nyúlni, sőt, ha az el is küldi, még mindig nem biztos, hogy a címzett mindegyike meg is kapta, az meg végképp nem ellenőrizhető biztosan.

0
0
Phoere képe

Ezzel nem. De nem is ez volt a kiinduló kérdés. Azt szeretted volna, hogy a kiküldött levél tartalmazza a címzettek névsorát.
Ha belegondolsz, rájössz: lehetetlen azt megoldani, hogy a kiküldendő levél szövege listát tartalmazzon azokról, akiknek sikeresen el lett küldve a levél.
A lista csak azt tartalmazhatja, hogy kiknek lesz elküldve.

Ha az elküldött leveleket akarod ellenőrizni, akkor pl. ez segíthet:

Maillog modul
Mail logger

Nem ismerem egyébként ezt, de ezt dobta ki a kereső.

De itt is csak azt tudhatod meg legfeljebb, hogy milyen e-mailokat adott át a Drupal a szervernek küldésre. Hogy az elküldte-e ténylegesen, aztán a leveleket valóban sikerült-e kézbesíteni - ez nem a Drupal része.

0
0

Csökönyi Ferenc

DruTa képe

Igen, köszönöm, én is erre céloztam sejtésemmel.

Azért kár, hogy a normál postán meg lehet ezt oldani, az elektronikus világban nem. Pl. a Google sem teszi lehetővé a levelezőjében a visszaigazolás küldését, amit viszont az asztali levelezők megtesznek.

0
0
Phoere képe

Mármint mit lehet megoldani a normál postán? Amit Te akarsz, az olyan, mintha a normál postai küldeménybe be akarnád tenni a postai igazolást arról, hogy hová kézbesítették ki a küldeményt. Holott még fel sem adtad a postára. Legfeljebb betehetsz egy listát, hogy kiknek küldöd még meg. Pont ezt csinálja ez a kód megfelelő helyre beillesztve.

A visszaigazolás kérése egy teljesen más téma, nem errről volt szó eddig (olvasd el pontosan, mit is írtál a témanyitóban).
Ugyanis a visszaigazolást NEM a küldő szerver küldi a feladónak, hanem a fogadó e-mail szerver, illetve a címzett levelező programja. Az első esetben kézbesítési igazolásról (postai nyelven tértivevény) beszélünk, amely igazolja, hogy a fogadó e-mail szerver a levelet elhelyezte a címzett postafiókjában (ezt a címzett nem tilthatja le, legfeljebb a rendszergazda), a második esetben olvasási visszaigazolásról van szó (pontosabban a levél megnyitásának igazolásáról), ezt a címzett letilthatja.

Biztos, hogy a Drupalban is megoldható (csak legfeljebb saját modullal), hogy visszaigazolást kapj arról, hogy a Drupal sikeresen átadta az e-mailt a küldő mail szervernek. A Drupal is mail() php függvényt használja, amelynek két visszadott értéke lehet: TRUE, ha sikeres volt és FALSE, ha nem. Ezt naplózhatod, ha akarod, de egyébként a fentebb javasolt modulok pont ezt teszik szerintem. Kérdés, szükséges-e.
Ezenkívül a mail fejléc adataiban beállíthatod, hogy egy megadott e-mailcímre küldjön kézbesítési, illetve olvasási igazolást (sikertelen kézbesítésről automatikusan küld a fogadó szerver, ezek a MAILER-DAEMON üzenetek).
De ki fogja ezeket olvasni? Ha van csak 50 címzett és mindenki naponta csak egy tartalmat küld be, amire megy levél, az 2500 visszaigazolás!!! Van ennek értelme? Át nézed egyenként, hogy mindegyik sikeres küldésről szól-e? De ha csak a küldő kapja meg a visszaigazolást, akkor is elárasztod a fiókját 50 darab visszaigazoló levéllel küldeményenként, amit ő nem kért.

Szóval ebben az esetben, amit Te vázoltál a nyitányban - szerintem - teljesen értelmetlen dolog visszaigazolást kérni. A Drupal mail küldője megbízhatóan működik, ha jó címek vannak beállítva, akkor vagy mindnek elküldi vagy programhiba miatt egynek sem. A levelek további útja pont annyira biztos (vagy bizonytalan), mint bárhonnan (gmail, asztali levelező) küldött e-mail sorsa.

1
0

Csökönyi Ferenc