21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
bestik_63
Profil
Ahoj mám menší problém.
Zkoušel jsem zprovoznit posílání emailů pomocí knihovny phpmailer. Posílání emailů mi funguje jak má přes lokální smtp server. Problém je ten že, pokud není smtp server funkční (případně se z nějakého jiného důvodu nepošle email), tak mi to vypisuje chybu (SMTP Error: Could not connect to SMTP host.), přestože ji vypisovat nechci. Dokonce to ani nevypisuje chybu "nastala chyba". Chtěl bych aby při poslání mailu mi to vypsalo hlášku a pokud se email nepošle, tak třeba neudělá nic, ale také aby se o neúspěšném poslání emailu uživatel nic nedozvěděl. Takhle se vždy nějaká chybová hláška pošle. Jedná se pravděpodobně o problém zachytávání vyjímek, kterým ještě asi úplně nerozumím. Věděl by někdo poradit pls :-) emailovou adresu apod. jsem úmyslně změnil na xxxx.

$email = new Mail;
            $email->isSMTP();
            $zprava = "pokus";
            $adresa = "xxx@xxx.xx";
            $email->Host = "127.0.0.1";
            $email->ContentType = "text/html";
            $email->From = "xxx@xxx.xx";
            $email->FromName = "IS";
            $email->AddAddress($adresa, "XXX XXX");
            $email->CharSet = "utf-8";
            $email->Encoding = "base64";
            $email->WordWrap =  0;
            $email->Subject = "Chyba při vkládání dat";
            $email->Body    = $zprava;
            try{
                $email->Send();    
            }
            catch (phpmailerException $e) {
              echo "nastala chyba";
              //echo $e->errorMessage(); //Pretty error messages from PHPMailer
            }
juriad
Profil
Musíš kontruktoru předat true, viz příklad, aby byly výjimky aktivní.
bestik_63
Profil
Děkuji moc za bleskurychlou odpověď. Teďka už to funguje. Jen teda nechápu proč, když nezadám true, tak se chyby vypisujou, když o ně evidentně nemám zájem :-)
Ale to je možná problém jiný :-)
juriad
Profil
Protože ve výchozím stavu jsou výjimky zakázané (jde jen o jiný způsob zpracování chyb):
https://github.com/PHPMailer/PHPMailer/blob/master/examples/exceptions.phps#L10

Teď nevidím, proč se ta hláška vypisuje.
bestik_63
Profil
trochu jsem se v tom hrabal a přišel jsem na to, že mám úplně jinou verzi než je na githubu, už to funguje jak má.
Kdyby to někoho zajímalo, tak chyba byla v knihovně při posílání vyjímky:
catch (phpmailerException $e) {
      $this->SetError($e->getMessage());
      if ($this->exceptions) {
        throw $e;
      }
      echo $e->getMessage()."\n";
      return false;
pokud bylo nastaveno nevypisování vyjímek $this->exception=false, tak se vyjímka stejně vypsala : echo $e->getMessage()."\n";

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0