• 16-09-2022, 15:19:41
    #1
    Tekrar tekrar yazmamak için bir PHPMailer için fonksiyon oluşturuyorum aşagıdaki fonksiyonu oluşturup göndermek istediğimde "Parse error: syntax error, unexpected 'use' (T_USE) in C:xampphtdocsincludespost.php on line 10 " alıyorum 10 sanır use olan satırlar bir türlü çözemedim nerede hata yaptığımı. Bu konuda yardımcı olursanız sevinirim.


    function sendMail($sendMailMessage)
        {
    
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\SMTP;
        use PHPMailer\PHPMailer\Exception;
        include 'PHPMailer/src/Exception.php';
        include 'PHPMailer/src/PHPMailer.php';
        include 'PHPMailer/src/SMTP.php';
    
        $mail = new PHPMailer(true);
        $mail->SMTPDebug = 0;                                    // SMTP hata ayıklama // 0 = mesaj göstermez (testler bittikten sonra kullanılmalıdır) // 1 = sadece mesaj gösterir // 2 = hata ve mesaj gösterir
        $mail->isSMTP();                                        
        $mail->SMTPAuth = true;                                    // SMTP doğrulamayı etkinleştirir
        $mail->Username = $mailayar['gonderen'];                // SMTP kullanıcı adı (gönderici adresi)
        $mail->Password = $mailayar['sifre'];                                // SMTP şifre
        switch($mailayar['guvenlik']){
        case 1:   
        $mail->Host = $mailayar['maildomain'];                        // Mail sunucusunun adresi
        $mail->Port = '465';                                        // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
        $mail->SMTPSecure = 'ssl';                                // Enable TLS encryption, '' , 'ssl' , 'tls'
        break;
        case 0:
        $mail->Host = $mailayar['maildomain'];                        // Mail sunucusunun adresi
        $mail->Port = '587';                                        // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
        $mail->SMTPSecure = 'tls';                                // Enable TLS encryption, '' , 'ssl' , 'tls'
        break;
    }
        $mail->SMTPOptions = array(
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true,
            ],
        );
        $mail->SetLanguage('tr', 'PHPMailer/language/');
        $mail->setFrom($mailayar['gonderen'] , $mailayar['gonderenisim']);        // Mail atıldığında gorulecek isim ve email
        $mail->addAddress($mailayar['alici']);                            // Mailin gönderileceği alıcı adresi
        $mail->isHTML(true);                                  
        $mail->Subject = 'Mesajınız var!';                                            // Email konusu
        $mail->Body    = $sendMailMessage ;                // Mailin içeriği
        $mail->CharSet = 'utf-8';
        if(!$mail->send()) {
            return false;
        } else {
            return true;
        }
        }

    sendMail('örnek mesaj');
  • 16-09-2022, 15:22:39
    #2

    use ve include kodlarını dosyanın en başına atın ve fonksiyonun üstüne yukarıdaki kodu yazın. İçine de global $mail yazın gerisi aynı zaten
  • 16-09-2022, 15:27:45
    #3
    yusok32 adlı üyeden alıntı: mesajı görüntüle

    use ve include kodlarını dosyanın en başına atın ve fonksiyonun üstüne yukarıdaki kodu yazın. İçine de global $mail yazın gerisi aynı zaten

    Normalde dosya şu şekilde
    include '../secure/inc/vt.php';
    
    
    function sendMail($sendMailMessage)
        {
    
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\SMTP;
        use PHPMailer\PHPMailer\Exception;
        include 'PHPMailer/src/Exception.php';
        include 'PHPMailer/src/PHPMailer.php';
        include 'PHPMailer/src/SMTP.php';
        
    
        
    
        $mail = new PHPMailer(true);
        $mail->SMTPDebug = 0;                                    // SMTP hata ayıklama // 0 = mesaj göstermez (testler bittikten sonra kullanılmalıdır) // 1 = sadece mesaj gösterir // 2 = hata ve mesaj gösterir
        $mail->isSMTP();                                        
        $mail->SMTPAuth = true;                                    // SMTP doğrulamayı etkinleştirir
        $mail->Username = $mailayar['gonderen'];                // SMTP kullanıcı adı (gönderici adresi)
        $mail->Password = $mailayar['sifre'];                                // SMTP şifre
        switch($mailayar['guvenlik']){
        case 1:   
        $mail->Host = $mailayar['maildomain'];                        // Mail sunucusunun adresi
        $mail->Port = '465';                                        // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
        $mail->SMTPSecure = 'ssl';                                // Enable TLS encryption, '' , 'ssl' , 'tls'
        break;
        case 0:
        $mail->Host = $mailayar['maildomain'];                        // Mail sunucusunun adresi
        $mail->Port = '587';                                        // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
        $mail->SMTPSecure = 'tls';                                // Enable TLS encryption, '' , 'ssl' , 'tls'
        break;
    }
        $mail->SMTPOptions = array(
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true,
            ],
        );
        $mail->SetLanguage('tr', 'PHPMailer/language/');
        $mail->setFrom($mailayar['gonderen'] , $mailayar['gonderenisim']);        // Mail atıldığında gorulecek isim ve email
        $mail->addAddress($mailayar['alici']);                            // Mailin gönderileceği alıcı adresi
        $mail->isHTML(true);                                  
        $mail->Subject = 'Mesajınız var!';                                            // Email konusu
        $mail->Body    = $sendMailMessage ;                // Mailin içeriği
        $mail->CharSet = 'utf-8';
        if(!$mail->send()) {
            return false;
        } else {
            return true;
        }
        }
    
    
    
    sendMail('hello@test.com');
    Sizin uyarınız ile şu şekilde mi olacak

    
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\SMTP;
        use PHPMailer\PHPMailer\Exception;
        include 'PHPMailer/src/Exception.php';
        include 'PHPMailer/src/PHPMailer.php';
        include 'PHPMailer/src/SMTP.php';
    
    include '../secure/inc/vt.php';
    
    
        
        $mail = new PHPMailer(true);
    
    function sendMail($sendMailMessage)
        {
    
    
        global $mail
        $mail->SMTPDebug = 0;                                    // SMTP hata ayıklama // 0 = mesaj göstermez (testler bittikten sonra kullanılmalıdır) // 1 = sadece mesaj gösterir // 2 = hata ve mesaj gösterir
        $mail->isSMTP();                                        
        $mail->SMTPAuth = true;                                    // SMTP doğrulamayı etkinleştirir
        $mail->Username = $mailayar['gonderen'];                // SMTP kullanıcı adı (gönderici adresi)
        $mail->Password = $mailayar['sifre'];                                // SMTP şifre
        switch($mailayar['guvenlik']){
        case 1:   
        $mail->Host = $mailayar['maildomain'];                        // Mail sunucusunun adresi
        $mail->Port = '465';                                        // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
        $mail->SMTPSecure = 'ssl';                                // Enable TLS encryption, '' , 'ssl' , 'tls'
        break;
        case 0:
        $mail->Host = $mailayar['maildomain'];                        // Mail sunucusunun adresi
        $mail->Port = '587';                                        // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
        $mail->SMTPSecure = 'tls';                                // Enable TLS encryption, '' , 'ssl' , 'tls'
        break;
    }
        $mail->SMTPOptions = array(
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true,
            ],
        );
        $mail->SetLanguage('tr', 'PHPMailer/language/');
        $mail->setFrom($mailayar['gonderen'] , $mailayar['gonderenisim']);        // Mail atıldığında gorulecek isim ve email
        $mail->addAddress($mailayar['alici']);                            // Mailin gönderileceği alıcı adresi
        $mail->isHTML(true);                                  
        $mail->Subject = 'Mesajınız var!';                                            // Email konusu
        $mail->Body    = $sendMailMessage ;                // Mailin içeriği
        $mail->CharSet = 'utf-8';
        if(!$mail->send()) {
            return false;
        } else {
            return true;
        }
        }
    
    
    
    sendMail('hello@test.com');

    bu şekildede ilginç şekilde hata alıyorum.
  • 16-09-2022, 15:29:14
    #4
    Hata nedir
  • 16-09-2022, 15:30:11
    #5
    yusok32 adlı üyeden alıntı: mesajı görüntüle
    Hata nedir


    Parse error: syntax error, unexpected '$mail' (T_VARIABLE), expecting ';' or ',' in C:xampphtdocsincludespost.php on line 24

    24 satır $mail->SMTPDebug = 0;
  • 16-09-2022, 15:31:35
    #6
    Şuradaki örneği uygularsanız sorun kalmaz.

    https://github.com/PHPMailer/PHPMailer
  • 16-09-2022, 15:35:39
    #7
    Biproje adlı üyeden alıntı: mesajı görüntüle
    Parse error: syntax error, unexpected '$mail' (T_VARIABLE), expecting ';' or ',' in C:xampphtdocsincludespost.php on line 24

    24 satır $mail->SMTPDebug = 0;

    sonda ; eksik
  • 16-09-2022, 15:58:30
    #8
    yusok32 adlı üyeden alıntı: mesajı görüntüle

    sonda ; eksik
    Teşekkür ederim bu şekilde çalışıyor ama şu var .

    $sorgu = $dbh->prepare("SELECT * FROM mailayar Where id=1");
    $sorgu->execute(['id' => "1"]);
    $mailayar = $sorgu->fetch();
    vt dosyasında mail ayar çektiğim yer var bu fonksiyonda bunları fonksiyon içine çekmiyor ve hatalı diyo, manuel yazınca gönderiyor. Fonksiyon içine bu kodu alırsamda hata veriyor bunun bir çözümü var mı acaba .
  • 16-09-2022, 15:59:53
    #9
    Biproje adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim bu şekilde çalışıyor ama şu var .

    $sorgu = $dbh->prepare("SELECT * FROM mailayar Where id=1");
    $sorgu->execute(['id' => "1"]);
    $mailayar = $sorgu->fetch();
    vt dosyasında mail ayar çektiğim yer var bu fonksiyonda bunları fonksiyon içine çekmiyor ve hatalı diyo, manuel yazınca gönderiyor. Fonksiyon içine bu kodu alırsamda hata veriyor bunun bir çözümü var mı acaba .
    Onuda aynı şekilde global $mailayar; derseniz çözülür