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í.

Diskuze: Nechodí maily přes mail()

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Zbyněk Chatt:28.11.2022 16:26

Ahoj, některým klientům nechodí e-maily, nechávám si to sám posílat na seznam, google a atlas a všude mi to přijde a nikdy ne ve SPAMu. Ale někomu to prostě nepřijde vůbec a není jich málo. Poradíte, co je špatně? /PS - máme starší systém, do kterého bohužel nevidím, a tam maily přichází úplně všem, ale jak říkám, nevidím do kódu, tak netuším, jak je to tam udělané.

Zkusil jsem:

$content = "
            <h1>Dobrý den</h1><br>
            Vaše poptávka na ***** byla potvrzena. Změna stavu zásilky je k dispozici po přihlášení na ****

            <br><br>

            Detaily poptávky:<br><br>

            <b>".$_REQUEST['compname']."</b><br>
            <table>
                <tr><td>Z</td><td>".$_REQUEST['adr1_street']."</td></tr>
                <tr><td>Do</td><td>".$_REQUEST['adr3_street']."</td></tr>
                <tr><td>Tarif</td><td>".$r3g['mot_name']."</td></tr>
                <tr><td>Čas přijetí</td><td>".$timenow."</td></tr>
                <tr><td>Doprava</td><td>".$r3g['delivery_type_name']."</td></tr>
            </table><br>
            Děkujeme za využití našich služeb.
            <br><br>
           *****
            ";


sendmail("Test testovič","[email protected]","","[email protected]","Test",$content);

function sendmail($name2,$from2,$copy,$to, $subject, $message2){

                    //if ($copy==1) $headers .= 'Bcc: '. $from2 . "\r\n";

                    $sender = mb_encode_mimeheader($name2).' <'.$from2.'>';
                    $recipient = $to.' <'.$to.'>';
                    $subject = mb_encode_mimeheader($subject, 'UTF-8', 'Q');


                    $headers  = "From: ".$sender."\n";
                    $headers .= "X-Sender: ".$sender."\n";
                    $headers .= 'X-Mailer: PHP/' . phpversion();
                    $headers .= "X-Priority: 0\n"; // Urgent message!
                    $headers .= "Return-Path: [email protected]\n"; // Return path for errors
                    $headers .= "MIME-Version: 1.0\r\n";
                    $headers .= "Content-Type: text/html; charset=UTF-8\n";


                    $body_html = '<!DOCTYPE html><html><body><p>'.$message2.'</p></body></html>';

                    $body = [
                    $body_html,
                    '',
                    ];
                    $body = implode("\r\n", $body);

                    // Sending email
                    if($success = mail($recipient, $subject, $body, $headers)){
                        $ret4 = "1";
                    } else{
                        if (!$success) {
                            $errorMessage = error_get_last()['message'];
                            } else $errorMessage = "[neznámá chyba]";
                        $ret4 = $errorMessage;
                    }


                   return $ret4;
    }

Chci docílit: Aby maily přišly všem.

 
Odpovědět
28.11.2022 16:26
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.11.2022 20:13

To asi nemas z php.net/mail, ze?

  1. pouziva se PHP_EOL a ne` \n a `\r\n pro headers
  2. Musi to byt na konci kazdeho radku. Ty si davas, kde chces \n \r\n nebo nic.

Cili, by mozna bylo lepsi pouzit pole a implodovat to az na konci.

$headers[] = "From: ".$sender;
$headers[] = ...
$headers = implode("\r\n", $headers);

3. nepouzivej vypis request primo do kodu $_REQUEST['compname'] Takovy kod je snadne pozmenit.

Hrozne mi to pripomina praci jisteho oxidiana z forka na programujte.com :) Proste neco nejak zplacane, bez premysleni, bez zkouseni kodu z dokumentace...

Proste, vemes kod z dokumentace a pokud mail prijde vsude na tva maily, tak ho upravis. Tys vzal nejake kousicky kodu, netestoval je, dal sem cely kus a rikas, hledejte mi chyby (ala pan oxidian). Mne se do toho nechce, ale postupoval bych tak, ze to redukuji na minimum a pak teprve doplnuji a po kazde zmene testuji, zda je to ok nebo ne.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
28.11.2022 20:13
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.11.2022 20:14

tady je php kod, ktery pouzivam ja. ale upravil jsem ho, tak snad tam neni chyba.
http://programujte.com/…il-pres-php/#…

 
Nahoru Odpovědět
28.11.2022 20:14
Avatar
Zbyněk Chatt:1.12.2022 13:00

Tak jsem zjistil, že se mi to vrací jenom z outlooků. Poznáte někdo z toho něco?

<***>: host
    foxhunter-cz.mail.protection.outlook.com[104.47.**** said: 550 5.7.606
    Access denied, banned sending IP [51.****]. To request removal from
    this list please visit https://sender.office.com/ and follow the
    directions. For more information please go to
    http://go.microsoft.com/fwlink/?LinkID=526655 AS(1430)
    [VI1EUR03FT007.eop-EUR03.prod.protection.outlook.com] (in reply to RCPT TO
    command)
 
Nahoru Odpovědět
1.12.2022 13:00
Avatar
Zbyněk Chatt:1.12.2022 13:17

PS. odebral jsem tedy IP se seznamu blokovaných, což jsem z té zprávy vyčetl. Ale aby to neblokovalo i příště ...

 
Nahoru Odpovědět
1.12.2022 13:17
Avatar
Zbyněk Chatt:1.12.2022 14:48

Testováno ted v ostrém provozu, zatím se nic nevrací. Tak snad ok a díky všem :)

 
Nahoru Odpovědět
1.12.2022 14:48
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.