Právě je 28 bře 2024 10:19

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 7 ] 
Autor Zpráva
 Předmět příspěvku: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 17 úno 2011 10:21 

Registrován:
08 čer 2010 09:18
Příspěvky:
23
Dobrý den, mám již v seznamu subscribers asi 180 adres a při automatickém rozeslání mi přišel e-mail, že nebylo možné odeslat kvůi vysokému počtu příjemců. J to možné nějak v VNM ošetřit?

"A message that you sent contained more recipients than allowed on this system. It was not delivered to any recipients."

Děkuji

DB


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 17 úno 2011 10:51 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 08:14
Příspěvky:
8492
Dobrý den,

posílání jednoho emailu je omezeno na maximálně 100 příjemců. Takže ve Vašem případě budete muset poslat dva emaily, každý s maximálně 100 e-mailovými adresami.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 17 úno 2011 10:59 

Registrován:
08 čer 2010 09:18
Příspěvky:
23
A jak to mám v tom systému prosím nastavit, aby to odešlo nadvakrát nebo i v budoucnu třeba na 10x?

Díky

DB


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 17 úno 2011 16:50 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 19:53
Příspěvky:
263
Dobrý den,

nastavit to v joomle zřejmě nejde. Co se týče limitu, tak limit na počet příjemmů vždy nějaký musí být, takže i kdybychom navýšili současný limit, stejně byste na to časem narazil (s nárustem počtem uživatelů).

Joomla používá pro posílání emailů knihovnu phpmailer. Jedná se o soubor libraries/phpmailer/phpmailer.php, je tam definice funkce Send(). Upravte ji do této podoby (jsou tam dva nově přidané úseky označené v komentářích):

Kód:
  function Send() {
    $header = '';
    $body = '';
    $result = true;

    if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
      $this->SetError($this->Lang('provide_address'));
      return false;
    }

    /* Set whether the message is multipart/alternative */
    if(!empty($this->AltBody)) {
      $this->ContentType = 'multipart/alternative';
    }

    $this->error_count = 0; // reset errors
    $this->SetMessageType();
    $header .= $this->CreateHeader();
    $body = $this->CreateBody();

    if($body == '') {
      return false;
    }

   // NOVE PRIDANY USEK - ZACATEK PRVNI CASTI

    $MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE=100;
    $number_of_messages = 1;
    $number_of_all_recipients = count($this->to) + count($this->cc) + count($this->bcc);
    if(count($this->to) + count($this->cc) < $MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE &&
        $number_of_all_recipients > $MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE) {
        $number_of_messages = intval(count($this->bcc) / ($MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE - count($this->to) - count($this->cc)));
        if(count($this->bcc) % ($MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE - count($this->to) - count($this->cc)) > 0) $number_of_messages++;
    }

    $orig_bcc = $this->bcc;
    for($i=0; $i<$number_of_messages; $i++) {
        $new_bcc = $orig_bcc;
        array_splice($new_bcc, 0, $i*($MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE - count($this->to) - count($this->cc)));
        array_splice($new_bcc, $MAX_NUMBER_OF_RECIPIENTS_IN_ONE_MESSAGE - count($this->to) - count($this->cc));
        $this->bcc=$new_bcc;
        $header = $this->CreateHeader();

   // NOVE PRIDANY USEK - KONEC PRVNI CASTI

    /* Choose the mailer */
    switch($this->Mailer) {
      case 'sendmail':
        $result = $this->SendmailSend($header, $body);
        break;
      case 'smtp':
        $result = $this->SmtpSend($header, $body);
        break;
      case 'mail':
        $result = $this->MailSend($header, $body);
        break;
      default:
        $result = $this->MailSend($header, $body);
        break;
        //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported'));
        //$result = false;
        //break;
    }

   // NOVE PRIDANY USEK - ZACATEK DRUHE CASTI

    }
    $this->bcc = $orig_bcc;

   // NOVE PRIDANY USEK - KONEC DRUHE CASTI

    return $result;
  }


Pokud provedete tuto úpravu v souboru libraries/phpmailer/phpmailer.php, tak se budou emaily posílat po 100 příjemcích, což by mělo vyřešit váš problém.

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 17 úno 2011 17:47 

Registrován:
08 čer 2010 09:18
Příspěvky:
23
Dobrý den, pane Vítku,

děkuji za nepochybně fundované rady, ale jsem "little bit frustrated" svou neznalostí a nepochopením toho, co píšete. Proto prosím o info:

- kde to najdu? jako tu knihovnu...
- jak se tam dostanu?

Díky DB


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 17 úno 2011 17:53 

Registrován:
08 čer 2010 09:18
Příspěvky:
23
Stejně mi nejde do hlavy, že to v tom systému Vemod News Mailer není nějak ošetřeno, když to nepochybně používají i pro odesílání tisícům návštěvníků - automatické newslettery. Jsou tam funkce jako "throttle mailings", "crontab links" a jiné divné výrazy, kterým nerozumím. :-)
DB


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Joomla - Vermod News Mailer a velké množství příjemnců
PříspěvekNapsal: 18 úno 2011 12:16 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 08:14
Příspěvky:
8492
Dobrý den,

testoval jsem modul a opravdu se to dá nastavit. V administraci modulu v sekci General zadejte do pole Throttle after hodnotu 1000 a do pole Throttle minimum interval hodnotu 1. Pomocí tohoto nastavení dojde k hromadnému odeslání mailů na každou adresu zvlášť. Takže nenastane chyba s omezeným počtem příjemců v jednom mailu. Samozřejmě pokud by se posílalo více než 1000 mailů, je potřeba navýšit hodnotu Throttle after (příp. odeslat nadvakrát).

Skript, který kolega vytvořil, je univerzální a také se dá použít. Pomocí této úpravy nemůže nikdy dojít k chybě s omezeným počtem příjemců. Jedná se tedy o univerzální skript pro aplikaci Joomla při použití php mail funkce. Pokud chcete využít tento skript, stačí soubor (phpmailer.php) rozbalit z přiloženého archivu a nakopírovat na server do složky libraries/phpmailer.
Příloha:
phpmailer.zip [13.54 KiB]
592 krát

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 7 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
Joomla partneři

Seznam všech partnerů

Joomla Hosting
Návody pro C4

© 2009-2024 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz