1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

Skrypt PHP mail

Dyskusja w 'Zabezpieczenia antyspamowe' rozpoczęta przez użytkownika Kuki, 8 Czerwiec 2015.

  1. Kuki

    Kuki Nowy użytkownik

    Wiadomości:
    1
    Docenione treści:
    0
    Witam serdecznie wszystkich forumowiczów.

    Od kilku dni nie radzę sobie z edycją mojego formularza kontaktowego, który mam na stronie.

    Starałem się edytować go tak jak jest to napisane w instrukcji z linku poniżej, ale albo robię coś nie tak albo home.pl jest do bani ;-p

    https://pomoc.home.pl/baza-wiedzy/formularz-kontaktowy-na-stronie-www-nie-wysyla-wiadomosci/

    Założyłem dwa adresy e-mail, jeden, który wysyła i drugi, który odbiera.

    Czy ktoś byłby tak dobry i zerknął w kod?

    PHP:
    <?php
        $owner_email 
    "odbieranie@mojadomena.pl";
        
    //SMTP server settings
        
    $host 'serwerXXXXXX.home.pl';
        
    $port '465';//"587";
        
    $username 'wysyłanie@mojadomena.pl';
        
    $password 'HasłoWysyłanie';

        
    $subject='A message from your site visitor ';
        
    $user_email='odbieranie@mojadomena.pl';   
        
    $message_body='';
        
    $message_type='html';

        
    $max_file_size=50;//MB
        
    $file_types='/(doc|docx|txt|pdf|zip|rar)$/';
        
    $error_text='something goes wrong';
        
    $error_text_filesize='File size must be less than';
        
    $error_text_filetype='Failed to upload file. This file type is not allowed. Accepted files types: doc, docx, txt, pdf, zip, rar.';

        
    $private_recaptcha_key='6LeZwukSAAAAACmqrbLmdpvdhC68NLB1c9EA5vzU'//localhost
       
       
        
    $use_recaptcha=isset( $_POST["recaptcha_challenge_field"]) and isset($_POST["recaptcha_response_field"]);
        
    $use_smtp=($host=='' or $username=='' or $password=='');
        
    $max_file_size*=1048576;

        if(
    $owner_email=='' || $owner_email=='#'){
            die(
    'Attention, recipient e-mail is not set! Please define "owner_email" variable in the MailHanlder.php file.');
        }

        if(
    preg_match('/^(127\.|192\.168\.)/',$_SERVER['REMOTE_ADDR'])){
            die(
    'Attention, contact form will not work locally! Please upload your template to a live hosting server.');
        }

        if(
    $use_recaptcha){
            require_once(
    'recaptchalib.php');
            
    $resp recaptcha_check_answer ($private_recaptcha_key,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
            if (!
    $resp->is_valid){
                die (
    'wrong captcha');
            }
        }
       
        if(isset(
    $_POST['name']) and $_POST['name'] != ''){$message_body .= '<p>Visitor: ' $_POST['name'] . '</p>' "\n" '<br>' "\n"$subject.=$_POST['name'];}
        if(isset(
    $_POST['email']) and $_POST['email'] != ''){$message_body .= '<p>Email Address: ' $_POST['email'] . '</p>' "\n" '<br>' "\n"$user_email=$_POST['email'];}
        if(isset(
    $_POST['state']) and $_POST['state'] != ''){$message_body .= '<p>State: ' $_POST['state'] . '</p>' "\n" '<br>' "\n";}
        if(isset(
    $_POST['phone']) and $_POST['phone'] != ''){$message_body .= '<p>Phone Number: ' $_POST['phone'] . '</p>' "\n" '<br>' "\n";}   
        if(isset(
    $_POST['fax']) and $_POST['fax'] != ''){$message_body .= '<p>Fax Number: ' $_POST['fax'] . '</p>' "\n" '<br>' "\n";}
        if(isset(
    $_POST['message']) and $_POST['message'] != ''){$message_body .= '<p>Message: ' $_POST['message'] . '</p>' "\n";}   
        if(isset(
    $_POST['stripHTML']) and $_POST['stripHTML']=='true'){$message_body strip_tags($message_body);$message_type='text';}

    try{
        include 
    "libmail.php";

            
    $m= new Mail("utf-8");
            
    $m->From($user_email);
            
    $m->To($owner_email_item);
            
    $m->Subject($subject);
            
    $m->Body($message_body,$message_type);
            
    //$m->log_on(true);

            
    if(isset($_FILES['attachment'])){
                if(
    $_FILES['attachment']['size']>$max_file_size){
                    
    $error_text=$error_text_filesize ' ' $max_file_size 'bytes';
                    die(
    $error_text);           
                }else{           
                    if(
    preg_match($file_types,$_FILES['attachment']['name'])){
                        
    $m->Attach($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name'],'','attachment');
                    }else{
                        
    $error_text=$error_text_filetype;
                        die(
    $error_text);               
                    }
                }       
            }
            if(!
    $use_smtp){
                
    $m->smtp_on$host$username$password$port);
            }

            
    $m->Send();

        die(
    'success');
       
    }catch(
    Exception $mail){
        die(
    $mail);
    }   
    ?>
    Na stronie pojawia mi się komunikat, że e-mail został wysłany, ale skrzynka odbiorcza dalej jest pusta...

    Z góry dziękuję.

    Pozdrawiam,
    Kuki
     
  2. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    W skrócie przeanalizowaliśmy sprawę, ale nie możemy znaleźć informacji o wysyłce realizowanej z serwera. Proszę o cierpliwość, postaramy się pomóc lub przynajmniej nakierować na rozwiązanie :)
     
  3. Mariusz

    Mariusz pomoc.home.pl Moderator forum

    Wiadomości:
    3 087
    Docenione treści:
    302
    W podanym skrypcie korzystasz z biblioteki znajdującej się w pliku "libmail.php". Z uwagi na to, że nie jest to nasze oprogramowanie, możemy tylko podpowiedzieć jakie warunki skrypt powinien spełniać, aby wysyłanie wiadomości z formularza było możliwe.

    Możliwe rozwiązania:
    • zmodyfikować skrypt, aby przed wysyłką wiadomości dodawał do nagłówka linię zawierającą poprawny nagłówek:
      Kod:
      from: poprawny_adres@domena.pl

    • dodać do funkcji php mail(); dodatkowy, 5-ty parametr, zwierający poprawny adres:
      Kod:
      -f poprawny_adres@domena.pl

    Cała funkcja mail będzie wyglądała wtedy np. tak:
    Kod:
    mail($to, $subject, $message, $headers, "-f poprawny_adres@domena.pl");
    Parametr 5-ty funkcji mail() dodaje wpisane parametry do funkcji wysyłającej, a -f definiuje pole "from" w nagłówku.

    Mam nadzieję, że przekazane informacje będą pomocne.
     

Poleć forum znajomym