PHPMailer'daki sorun nedir?

111520

Megapat
Katılım
16 Mayıs 2016
Mesajlar
1.322
Çözümler
3
Apache üzerinden çalıştırdığım zaman formu yolluyorum ve mailime düşüyor fakat hosting aldığım siteye yüklediğim de kodları şu hatayı alıyorum;

405 - HTTP verb used to Access this page is not allowed.​

The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt Access.​


PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require __DIR__ . '/../assets/vendor/autoload.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
 // Formdan gelen verileri alıyoruz
 $isim = htmlspecialchars($_POST['isim']);
 $email = htmlspecialchars($_POST['email']);
 $telefon = htmlspecialchars($_POST['telefon']);
 $cinsiyet = htmlspecialchars($_POST['cinsiyet']);
 $egitimDurumu = htmlspecialchars($_POST['egitimDurumu']);
 $askerlikDurumu = htmlspecialchars($_POST['askerlikDurumu']);
 $ehliyetDurumu = htmlspecialchars($_POST['ehliyetDurumu']);
 $comment = htmlspecialchars($_POST['comment']);

 if (isset($_FILES['attachment']) && $_FILES['attachment']['error'] == UPLOAD_ERR_OK) {
 $upload_dir = __DIR__ . '/../uploads/'; // Yükleme dizini
 $file_name = basename($_FILES['attachment']['name']);
 $upload_file = $upload_dir . $file_name;

 if (!is_dir($upload_dir)) {
 mkdir($upload_dir, 0777, true);
 }

 if (!move_uploaded_file($_FILES['attachment']['tmp_name'], $upload_file)) {
 die('Dosya yüklenirken bir hata oluştu.');
 }
 } else {
 die('Dosya yüklenemedi.');
 }

 $mail = new PHPMailer(true);

 try {

 $mail->SMTPDebug = 0;
 $mail->isSMTP();
 $mail->Host = 'smtp.gmail.com';
 $mail->SMTPAuth = true;
 $mail->Username = '**@gmail.com';
 $mail->Password = '**';
 $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
 $mail->Port = 465;

 $mail->CharSet = 'UTF-8';
 $mail->setFrom($email, $isim);
 $mail->addAddress('**@gmail.com', 'Başvuru Sorumlusu');
 $mail->addReplyTo($email, $isim);

 $mail->addAttachment($upload_file, $file_name);

 $mail->isHTML(true);
 $mail->Subject = 'Yeni İş Başvurusu: ' . $isim;
 $mail->Body = "
 <h3>Yeni İş Başvurusu</h3>
 <p><strong>İsim:</strong> $isim</p>
 <p><strong>E-posta:</strong> $email</p>
 <p><strong>Telefon:</strong> $telefon</p>
 <p><strong>Cinsiyet:</strong> $cinsiyet</p>
 <p><strong>Eğitim Durumu:</strong> $egitimDurumu</p>
 <p><strong>Askerlik Durumu:</strong> $askerlikDurumu</p>
 <p><strong>Ehliyet Durumu:</strong> $ehliyetDurumu</p>
 <p><strong>Görüş/Mesaj:</strong> $comment</p>
 ";
 $mail->AltBody = "Yeni İş Başvurusu\nİsim: $isim\nE-posta: $email\nTelefon: $telefon\nCinsiyet: $cinsiyet\nEğitim Durumu: $egitimDurumu\nAskerlik Durumu: $askerlikDurumu\nEhliyet Durumu: $ehliyetDurumu\nGörüş/Mesaj: $comment";

 $mail->send();

 header("Location: is-form-tamamlandi.html");
 exit();

 } catch (Exception $e) {
 echo "Başvuru gönderilemedi. Lütfeen tekrar deneyin. Hata: {$mail->ErrorInfo}"; // Hata mesajı
 } finally {
 if (file_exists($upload_file)) {
 unlink($upload_file);
 }
 }
}
?>

@dgknbzglu Sizin bu konu hakkındaki görüşlerinizide özellikle merak ediyorum.
 
form kodunu da atabilir misin?
HTML:
[CODE=html]  <body>

    <div class="container">

      <div class="row justify-content-center">

        <div id="logo" class="col-12 text-center">

          <img src="../assets/img/logo.png" alt="" />

        </div>

      </div>



      <div class="row">

        <div id="form-tagline" class="col-md-4">

          <div class="form-tagline">

            <i class="fa fa-envelope fa-5x"></i>

            <h2>İş Başvuru Formu</h2>

          </div>

        </div>



        <div id="form-content" class="col-md-8">

          <form

            autocomplete="off"

            class="contact-form"

            action="isbasvuru.php"

            method="POST"

            enctype="multipart/form-data"

          >

            <div class="row form-group">

              <div class="col-sm-3">

                <input type="hidden" />

                <label id="name-label" class="control-label" for="isim"

                  >İsim:</label

                >

              </div>



              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id="basic-addon-isim"

                    ><i class="fa fa-user"></i

                  ></span>

                </div>

                <input

                  id="isim"

                  type="text"

                  class="form-control"

                  placeholder="Adınız, Soyadınız"

                  name="isim"

                  required

                />

              </div>

            </div>



            <div class="form-group row">

              <div class="col-sm-3">

                <label id="" class="control-label" for="email">Mail:</label>

              </div>



              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa fa-envelope"></i

                  ></span>

                </div>

                <input

                  type="email"

                  class="form-control"

                  id="email"

                  placeholder="Mail Adresiniz"

                  name="email"

                  pattern="^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$"

                  required

                />

              </div>

            </div>

            <div class="form-group row">

              <div class="col-sm-3">

                <label id="" class="control-label" for="telefon"

                  >Telefon Numarası:</label

                >

              </div>

              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa fa-phone"></i

                  ></span>

                </div>

                <input

                  type="text"

                  class="form-control"

                  id="telefon"

                  placeholder="Telefon Numaranızı Girin"

                  name="telefon"

                  oninput="this.value = this.value.replace(/[^0-9]/g, '')"

                  required

                />

              </div>

            </div>



            <div class="form-group row">

              <div class="col-sm-3">

                <label class="control-label" for="cinsiyet">Cinsiyet:</label>

              </div>

              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa fa-venus-mars"></i

                  ></span>

                </div>

                <select

                  class="form-control"

                  id="cinsiyet"

                  name="cinsiyet"

                  required

                >

                  <option value="" disabled selected hidden>Seçiniz</option>

                  <option value="Erkek">Erkek</option>

                  <option value="Kadin">Kadın</option>

                </select>

              </div>

            </div>

            <div class="form-group row">

              <div class="col-sm-3">

                <label class="control-label" for="egitimDurumu"

                  >Eğitim Durumu:</label

                >

              </div>

              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa fa-graduation-cap"></i

                  ></span>

                </div>

                <select

                  class="form-control"

                  id="egitimDurumu"

                  name="egitimDurumu"

                  required

                >

                  <option value="" disabled selected hidden>Seçiniz</option>

                  <option value="Ilkokul">İlkokul</option>

                  <option value="Ortaokul">Ortaokul</option>

                  <option value="Lise">Lise</option>

                  <option value="OnLisans">Ön Lisans</option>

                  <option value="Lisans">Lisans</option>

                  <option value="Master">Master</option>

                  <option value="Doktora">Doktora</option>

                </select>

              </div>

            </div>

            <div class="form-group row">

              <div class="col-sm-3">

                <label class="control-label" for="askerlikDurumu"

                  >Askerlik Durumu:</label

                >

              </div>

              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa-solid fa-person-military-pointing"></i

                  ></span>

                </div>

                <select

                  class="form-control"

                  id="askerlikDurumu"

                  name="askerlikDurumu"

                  required

                >

                  <option value="" disabled selected hidden>Seçiniz</option>

                  <option value="Muaf">Muaf</option>

                  <option value="Tecilli">Tecilli</option>

                  <option value="Yapildi">Yapıldı</option>

                </select>

              </div>

            </div>

            <div class="form-group row">

              <div class="col-sm-3">

                <label class="control-label" for="ehliyetDurumu"

                  >Ehliyet Durumu:</label

                >

              </div>

              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa fa-id-card"></i

                  ></span>

                </div>

                <select

                  class="form-control"

                  id="ehliyetDurumu"

                  name="ehliyetDurumu"

                  required

                >

                  <option value="" disabled selected hidden>Seçiniz</option>

                  <option value="Var">Var</option>

                  <option value="Yok">Yok</option>

                </select>

              </div>

            </div>

            <div class="form-group row">

              <div class="col-sm-3">

                <label class="control-label" for="attachement">CV</label>

              </div>

              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id="">

                    <i class="fa fa-file-pdf"></i>

                  </span>

                </div>

                <div class="custom-file">

                  <input

                    type="file"

                    class="custom-file-input"

                    id="attachement"

                    name="image"

                    accept=".pdf"

                    required

                  />

                  <label class="custom-file-label" id=""

                    >Sadece <b>PDF</b> Formatı Geçerlidir</label

                  >

                </div>

              </div>

            </div>

            <hr />



            <div class="form-group row">

              <div class="col-sm-3">

                <label class="control-label" for="comment"

                  >İş Dönemi ile ilgili Görüş/Mesaj:</label

                >

              </div>



              <div class="input-group col-sm-9">

                <div class="input-group-prepend">

                  <span class="input-group-text" id=""

                    ><i class="fa fa-comment"></i

                  ></span>

                </div>

                <textarea

                  class="form-control"

                  name="comment"

                  rows="5"

                  id="comment"

                  style="resize: none"

                ></textarea>

              </div>

            </div>

            <br />

            <div class="form-check">

              <input

                class="form-check-input"

                type="checkbox"

                value=""

                id="flexCheckDefault"

                required

              />

              <label class="form-check-label" for="flexCheckDefault">

                <strong>

                  <a href="../kvkk.html" target="_blank">KVKK</a> Metnini

                  Okudum, <u> Onaylıyorum.</u></strong

                >

              </label>

            </div>

            <div class="form-group row">

              <div class="col-sm-12 submit-button">

                <button

                  type="submit"

                  id="submit"

                  class="btn btn-default"

                  aria-pressed="true"

                >

                  Başvuruyu Gönder

                </button>

              </div>

            </div>

          </form>

        </div>

      </div>

    </div>

    <script>

      document

        .querySelector(".custom-file-input")

        .addEventListener("change", function (e) {

          var fileName = e.target.files[0].name;

          var label = document.querySelector(".custom-file-label");

          label.innerHTML = fileName;

        });

    </script>

    <script>

      const cinsiyetSelect = document.getElementsByName("cinsiyet")[0];

      const askerlikDurumuSelect =

        document.getElementsByName("askerlikDurumu")[0];



      cinsiyetSelect.addEventListener("change", function () {

        if (cinsiyetSelect.value === "Kadin") {

          askerlikDurumuSelect.disabled = true;

          askerlikDurumuSelect.value = "";

        } else {

          askerlikDurumuSelect.disabled = false;

        }

      });

    </script>

  </body>
[/CODE]
 
html kısmında da bir problem gözükmüyor. Sunucuda ilk işiniz mi? Post işlemi yapılabiliyor mu daha basit sadece post verisini okuyup print_r ile verileri görüp görmediğini kontrol eder misin? bunu sadece 1-2 text input ile yaparsan daha iyi olur. Sonrasında çalışır ise file ile deneme yaparsın.
 
Merhaba, bir kaç gündür bakmıyordum sosyale kusura bakma yeni gördüm konuyu.
Back-end ve form kodlarında bir absürtlük göremedim. Eğer PHPMailer dosyalarında problem yoksa ki Apache olarak çalıştığını söylemişsin, sunucu kaynaklı problem yaşıyorsun. Zaten 405 hatası almışsın bu bazı istekleri gerçekleştiremiyor olduğun anlamına geliyor. GET, POST, PUT gibi isteklerden engelleyebiliyorlar. Hosting hizmeti aldığın firmaya destek talebi açarak bunu sor gerekli açıklamayı yaparlar. Mümkünse bilindik bir firmadan hosting al ve o şekilde çalıştır.

İstersen 1 haftalık deneme bir hosting sağlayabilirim sana, ulaşabilirsin profilimden.
Kolay gelsin.
 
Alakası var mıdır bilmiyorum ama portu 465 yerine 587 yapınca bir sorun yok şu anlık. Canlı ortamda da başarıyla iletmeyi başardım.
 
Vardır, çünkü bazı sunucular 465 bazı sunucular 587 bazıları da her ikisine de izin verir. Yine sunucu kaynaklı bir problemdi bu sonuç olarak. 587 kullanırken STARTTSL kullanmazsan verinin güvenliği sorun yaratabilir.
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
komutunu eklersen güvenli çalışır tabii eğer sunucu kaynaklı problem yaratmazsa.
Sorunun çözüldüğüne sevindim kolay gelsin.
 

PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {

 $isim = htmlspecialchars($_POST['isim'], ENT_QUOTES, 'UTF-8');
 $email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');
 $telefon = htmlspecialchars($_POST['telefon'], ENT_QUOTES, 'UTF-8');
 $cinsiyet = htmlspecialchars($_POST['cinsiyet'], ENT_QUOTES, 'UTF-8');
 $egitimDurumu = htmlspecialchars($_POST['egitimDurumu'], ENT_QUOTES, 'UTF-8');
 $askerlikDurumu = htmlspecialchars($_POST['askerlikDurumu'], ENT_QUOTES, 'UTF-8');
 $ehliyetDurumu = htmlspecialchars($_POST['ehliyetDurumu'], ENT_QUOTES, 'UTF-8');
 $comment = htmlspecialchars($_POST['comment'], ENT_QUOTES, 'UTF-8');

 $cv = $_FILES['image'];
 $cvName = uniqid() . '_' . basename($cv['name']); // Benzersiz dosya adı
 $cvPath = 'uploads/' . $cvName;

 if (move_uploaded_file($cv['tmp_name'], $cvPath)) {

 } else {
 die("Dosya yüklenemedi.");
 }

 $mail = new PHPMailer(true);

 try {

 $mail->isSMTP();
 $mail->Host = 'smtp.gmail.com'; 
 $mail->SMTPAuth = true;
 $mail->Username = '**@gmail.com'; // SMTP kullanıcı adı
 $mail->Password = '**'; // SMTP şifre
 $mail->SMTPSecure = 'tls';
 $mail->Port = 587;

 $mail->CharSet = 'UTF-8';

 $mail->setFrom($email, $isim);
 $mail->addAddress('ik@**.com', 'Başvuru Alıcı');

 $mail->isHTML(true);
 $mail->Subject = 'Yeni İş Başvurusu';
 $mail->Body = "<h3>Yeni İş Başvurusu</h3>
 İsim: $isim<br>
 Mail: $email<br>
 Telefon: $telefon<br>
 Cinsiyet: $cinsiyet<br>
 Eğitim Durumu: $egitimDurumu<br>
 Askerlik Durumu: $askerlikDurumu<br>
 Ehliyet Durumu: $ehliyetDurumu<br>
 İş Dönemi ile ilgili Görüş/Mesaj: $comment";

 $mail->addAttachment($cvPath);

 $mail->send();

 unlink($cvPath);

 echo 'Başvurunuz başarıyla gönderildi, En kısa sürede size dönüş yapacağız. Sayfayı kapatabilirsiniz';
 } catch (Exception $e) {
 echo "Mesaj gönderilemedi. Hata: {$mail->ErrorInfo}";
 }
} else {
 echo "Geçersiz istek.";
}
?>

şu şekil kullanmıştım ama
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…