• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

formularz kontaktowy

Object Storage Arubacloud
0 głosów
276 wizyt
pytanie zadane 10 sierpnia 2017 w PHP przez mi-20 Stary wyjadacz (13,190 p.)

Witam, czy taki kod odpowiedzialny za wysłanie formularza z wykorzystaniem funkcji mail() jest poprawny?

<?php

$to      = 'email@odbiorcy.pl';
$name    = $_POST['name'];
$email   = $_POST['email'];
$subject = 'Nowy e-mail od ' . $name . ' (' . $email . ')';
$message = $_POST['message'];
$headers = 'From: ' . $name . ' (' . $email . ')';
$headers .= 'Content-Type: text/html; charset=utf-8';

mail($to, $subject, $message, $headers);

echo '<h1>Wiadomość wysłana :)</h1>';
?>

 

1 odpowiedź

+1 głos
odpowiedź 10 sierpnia 2017 przez CzikaCarry Szeryf (75,340 p.)
Jest poprawny (nie licząc braku walidacji i filtrowania pól formularza hyhy), ale jest też jedna zależność:

SwiftMailer >= PHPmailer > wysyłanie maili ręcznie > wysyłanie maili w postaci wydrukowanej Pocztą Polską > funkcja mail()
komentarz 10 sierpnia 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Jeśli kod jest poprawny, po wysłaniu dostaję powiadomienie o wysłanym mailu, dlaczego maile nie dochodzą na pocztę odbiorcy?
komentarz 10 sierpnia 2017 przez CzikaCarry Szeryf (75,340 p.)
Po pierwsze primo, to, że kod jest poprawny nie oznacza, że masz dobrze skonfigurowany serwer (PHP.ini), nie oznacza to też, że dane które podałeś do funkcji są poprawne. Polecam odejść od funkcji mail i przerzucić się na PHPmailer / SwiftMailer
1
komentarz 10 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

SwiftMailer >= PHPmailer > wysyłanie maili ręcznie > wysyłanie maili w postaci wydrukowanej Pocztą Polską > funkcja mail()

yes laugh

komentarz 11 sierpnia 2017 przez mi-20 Stary wyjadacz (13,190 p.)

ok, w takim razie PHPMailer.

Mam kod konfiguracyjny:

  <?php
    require __DIR__ . '/../vendor/autoload.php';
    function send_mail($config)
    {
    $mail = new PHPMailer;

    //$mail->SMTPDebug = 3;                               // Enable verbose debug output
    $mail->CharSet = 'UTF-8';
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.mailtrap.io';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = '801150034be79f';                 // SMTP username
    $mail->Password = 'e9bd1ffb9e5ee0';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 2525;                                    // TCP port to connect to

    $mail->setFrom('from@mailtrap.io', 'Michal');
    //$mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
    $mail->addAddress('adres@odbiorcy.pl');               // Name is optional
    $mail->addReplyTo($config->from_email, $config->from_name);
    //$mail->addCC('cc@example.com');
    //$mail->addBCC('bcc@example.com');

    //$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
    $mail->isHTML(true);                                  // Set email format to HTML

    $mail->Subject = $config->mail_subject;
    $mail->Body    = $config->mail_body;
    $html = new \Html2Text\Html2Text('$mail->Body');
    $mail->AltBody =  $html->getText();

    if(!$mail->send()) {
        echo 'Nie udało się wysłać wiadomości';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Wiadomość została wysłana';
    }
    }
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
     $config = (object) [
        'from_email' => $_POST['from_email'],
        'from_name' => $_POST['from_name'],
        'mail_subject' => $_POST['mail_subject'],
        'mail_body' => $_POST['mail_body'],
    ];

    send_mail($config);
}

?>
<form action="" method="POST">
<input type="text" placeholder="Mail" name="from_email"/>
<input type="text" placeholder="Name" name="from_name"/>
<input type="text" placeholder="Subject" name="mail_subject"/>
<input type="text" placeholder="Message" name="mail_body"/>
<input type="submit" value="SEND"/>


</form>

Konfiguracja SMTP z wykorzystaniem Mailtrap. Teoretycznie po podaniu adresu odbiorcy w zmiennej  $mail na ten adres powinna przyjść wiadomość, prawda?

Dlaczego więc tak się nie dzieje?

Bardzo bym prosił o wyjaśnienie i o wskazanie błędu

komentarz 11 sierpnia 2017 przez CzikaCarry Szeryf (75,340 p.)
Polecam skorzystać z SMTP google: https://support.google.com/a/answer/176600?hl=pl i skonfigurować PHPmailer według niego

W PHP.ini też skonfiguruj porty, adres, typ połączenia.

Pamiętam też że w mailu na Gmailu który wysyła te maile trzeba ustawić jakiś tam tryb aby mógł wysyłać maile.

Podobne pytania

+1 głos
0 odpowiedzi 189 wizyt
pytanie zadane 11 stycznia 2023 w PHP przez Tadeusz Kwoka Nowicjusz (170 p.)
0 głosów
1 odpowiedź 434 wizyt
pytanie zadane 20 maja 2020 w HTML i CSS przez PanPrezes Obywatel (1,520 p.)
0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 11 lipca 2019 w HTML i CSS przez Hardwell Dyskutant (8,980 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...