<?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);
}
}
}
?>
Aşağıdaki linkten uygulama şifresi oluşturup SMTP şifreniz olarak kullanıp tekrar deneyin.
https://myaccount.google.com/apppasswords
form kodunu da atabilir misin?
[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>
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.[/CODE]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>
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.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.
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
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.";
}
?>