IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
NouF
Člen
Avatar
NouF:13.2.2019 16:00

Odeslat emaily rychleji, aktuální nastavení funguje tak, chci odeslat email, použiju server Amazonu SES a odešle se. Toto trvá cca 2s.

Používám nette fw a připojení amazon ses. Aktuálně mám jen loop emailů a vždy probehně odeslání, jen to mám špatně napsané. 1 email = 1request na amazon

Máte někdo zkušenost s Amazon SES?

Chci docílit: Rád bych poslal cca 8-10 emailů za vteřinu (tak jako je můj limit od Amazonu)

 
Odpovědět
13.2.2019 16:00
Avatar
NouF
Člen
Avatar
Odpovídá na NouF
NouF:13.2.2019 16:03

Já používám něco takového.

$options = [
    'host' => 'email-smtp.eu-west-1.amazonaws.com', // například tento, záleží podle regionu
    'username' => 'xxx',
    'password' => 'yyy',
    'secure' => 'ssl'
    'persistent' => true,
];

$message = new \Nette\Mail\Message();
$message->setFrom('[email protected]', 'Název odesilatele')
    ->addTo('[email protected]')
    ->setSubject('PHP Předmět')
    ->setHtmlBody('Máme rádi PHP!');

$smtpMailer = new \Nette\Mail\SmtpMailer($options);
$smtpMailer->send($message);
 
Nahoru Odpovědět
13.2.2019 16:03
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.2.2019 9:56

8-10 emailů za vteřinu

U mailu je zasadni problem spam. Ruzna antispamova opatreni zabranuji odesilat vice mailu soucasne.
Je treba s takovou transakci dohodnout se spravcem serveru, ktery maily odesila.

K odesilani mailu muzes pouzivat server, kde web bezi. Nemusis pouzivat externi sluzbu.
V obou pripadech plati, ze ta sluzba ma nastavena nejaka omezeni a antispamova opatreni. Zalezi hodne na tom, kolik platis.

Pokud se chces vyhnout antispamu, jsou na to ruzna pravidla.

  • domluva se spravcem a info od nej
  • do kazdeho mailu pridat specialni unikatni kod, podle pokynu spravce
  • odesilat behem noci (0-4h), protoze inet je okupovan uzivateli mezi 8-24h, spicky 10h (lide v praci), 14h, 16-19h (druha smena, lide z prace, deti doma)
  • dalsi pravidla
 
Nahoru Odpovědět
14.2.2019 9:56
Avatar
NouF
Člen
Avatar
Odpovídá na Peter Mlich
NouF:14.2.2019 10:52

Ahoj, u Amazonu mám sjednaný limit 14 mailu za s a 50 000 za den. Takže v tomto bych problém nevidel, spíš jde o to, že dlouho trvá připojení k Amazonu, takže bych rád našel řešení - jeden request na připojení k serveru a pak jen posílání a odpojení. A né připojit, poslat odpojit, připojit poslat odpojit.

Díky

 
Nahoru Odpovědět
14.2.2019 10:52
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.2.2019 12:17

google = php conect to mail server
https://www.lifewire.com/…-ssl-1171197
Tady pisou, ze pouzivaji pear mail. Ale tusim, ze firemni admin rikal, ze byla v pear ted nalezena nejaka chybka, tak ti to asi nepujde spustit na vasem serveru.

https://www.hostinger.com/…ing-php-mail
Tady pouzivaji phpmailer.

google = php conect to mail server lot of mail socket
http://php.net/…map-open.php

google = php mail socket
https://stackoverflow.com/…-with-socket

$fp=  fsockopen("smtp.myhost.com", 25);
fputs($fp, "EHLO your.domain\r\n");
fputs($fp, "AUTH LOGIN\r\n");
fputs($fp, "MAIL FROM:" . $from_mail . "\r\n");
fputs($fp, base64_encode($login) . "\r\n");
fputs($fp, base64_encode($password) . "\r\n");
fputs($fp, "RCPT TO:" . $mail_to . "\r\n");
fputs($fp, "DATA\r\n");
fputs($fp, $header . "\r\n" . $text . "\r\n.\r\n");
fputs($fp, "QUIT\r\n");

https://schoudhury.com/…h-fsockopen/

function smtp_mail($to, $subject, $message, $headers = '')
{
    $recipients = explode(',', $to);
    $user = '<your mail id>';
    $pass = '<your password>';
    // The server details that worked for you in the above step
    $smtp_host = '<server>';
    //The port that worked for you in the above step
    $smtp_port = 465;

    if (!($socket = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 15)))
    {
      echo "Error connecting to '$smtp_host' ($errno) ($errstr)";
    }

    server_parse($socket, '220');

    fwrite($socket, 'EHLO '.$smtp_host."\r\n");
    server_parse($socket, '250');

    fwrite($socket, 'AUTH LOGIN'."\r\n");
    server_parse($socket, '334');

    fwrite($socket, base64_encode($user)."\r\n");
    server_parse($socket, '334');

    fwrite($socket, base64_encode($pass)."\r\n");
    server_parse($socket, '235');

    fwrite($socket, 'MAIL FROM: <'.$user.'>'."\r\n");
    server_parse($socket, '250');

    foreach ($recipients as $email)
    {
        fwrite($socket, 'RCPT TO: <'.$email.'>'."\r\n");
        server_parse($socket, '250');
    }

    fwrite($socket, 'DATA'."\r\n");
    server_parse($socket, '354');

    fwrite($socket, 'Subject: '
      .$subject."\r\n".'To: <'.implode('>, <', $recipients).'>'
      ."\r\n".$headers."\r\n\r\n".$message."\r\n");

    fwrite($socket, '.'."\r\n");
    server_parse($socket, '250');

    fwrite($socket, 'QUIT'."\r\n");
    fclose($socket);

    return true;
}

//Functin to Processes Server Response Codes
function server_parse($socket, $expected_response)
{
    $server_response = '';
    while (substr($server_response, 3, 1) != ' ')
    {
        if (!($server_response = fgets($socket, 256)))
        {
          echo 'Error while fetching server response codes.', __FILE__, __LINE__;
        }
    }

    if (!(substr($server_response, 0, 3) == $expected_response))
    {
      echo 'Unable to send e-mail."'.$server_response.'"', __FILE__, __LINE__;
    }
}

https://gist.github.com/…ross/2002233

Editováno 14.2.2019 12:18
 
Nahoru Odpovědět
14.2.2019 12:17
Avatar
NouF
Člen
Avatar
Odpovídá na Peter Mlich
NouF:14.2.2019 21:08

Ahoj, zatim díky, prokoušu se informacema a dám ti vědet, jestli sem něco vymyslel.

Děkuju

 
Nahoru Odpovědět
14.2.2019 21:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.