اذهب إلى المحتوى
  • 0

مشكلة في ارسال بريد التحقق عبر mail()

تمام عصام

السؤال

عند تسجيل مستخدم جديد في موقعي يتم ارسال بريد التحقق الى البريد غير المرغوب فيه كيف جعله يرسل بريد التحقق الى البريد الوارد 

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>التسجيل</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <form action="register.php" method="POST">
        <h2>التسجيل</h2>
        <label for="username">اسم المستخدم:</label>
        <input type="text" id="username" name="username" required>
        <label for="email">البريد الإلكتروني:</label>
        <input type="email" id="email" name="email" required>
        <label for="password">كلمة المرور:</label>
        <input type="password" id="password" name="password" required>
        <button type="submit">تسجيل</button>
    </form>
    <?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        require 'config.php';

        $username = base64_encode($_POST['username']);
        $email = $_POST['email'];
        $password = base64_encode(password_hash($_POST['password'], PASSWORD_DEFAULT));
        $verification_code = bin2hex(random_bytes(16));

        try {
            // تحقق من وجود البريد الإلكتروني
            $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
            $stmt->execute([$email]);
            if ($stmt->rowCount() > 0) {
                echo "<p>البريد الإلكتروني موجود بالفعل. يرجى استخدام بريد إلكتروني آخر.</p>";
            } else {
                // إدخال بيانات المستخدم الجديدة
                $stmt = $conn->prepare("INSERT INTO users (username, email, password, verification_code, is_verified) VALUES (?, ?, ?, ?, 0)");
                $stmt->execute([$username, $email, $password, $verification_code]);

                // إعدادات البريد الإلكتروني
                $to = $email;
                $subject = 'التحقق من عنوان البريد الإلكتروني';
                $message = "يرجى النقر على الرابط التالي للتحقق من عنوان بريدك الإلكتروني:
                            <a href='رابط صفحة التحقق?code=$verification_code'>التحقق من البريد الإلكتروني</a>";
                $headers = "From:البريد الالكتروني خاصتي \r\n";
                $headers .= "Reply-To:البريد الالكتروني خاصتي\r\n";
                $headers .= "Content-type: text/html\r\n";

                if (mail($to, $subject, $message, $headers)) {
                    echo "<p>تم التسجيل بنجاح! تم إرسال بريد إلكتروني للتحقق إلى عنوان بريدك الإلكتروني.</p>";
                } else {
                    echo "<p>فشل في إرسال بريد التحقق.</p>";
                }
            }
        } catch (PDOException $e) {
            echo "<p>حدث خطأ أثناء التسجيل: " . $e->getMessage() . "</p>";
        }
    }
    ?>
</body>
</html>

تم التعديل في بواسطة تمام عصام
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

هذه ليست مشكلة متعلقة بالكود 

لتحسين إمكانية وصول رسائل البريد الإلكتروني إلى صندوق الوارد بدلاً من البريد غير المرغوب فيه (السبام)، يمكنك اتباع الخطوات التالية:

  • تأكد من صحة إعدادات البريد الإلكتروني: استخدم عنوان بريد إلكتروني موثوق: استخدم عنوان بريد إلكتروني خاص بك يكون احترافيا ولا تقوم بإستخدام بريد جوجل بإسم مبهم أو يدل على حساب spam. 
  • تجنب إرسال رسائل البريد الإلكتروني بشكل كثير: لا ترسل رسائل كثيرة لنفس الحساب وذلك تجنب إرسال رسائل غير مرغوب فيها حيث يمكن أن يؤدي ذلك إلى وضع عنوان بريدك في قائمة البريد المزعج.
  • استخدم خدمة إرسال بريد إلكتروني موثوقة: اختر موفر خدمة موثوق إذا كانت الإستضافة الخاصة بك توفر لك بريد إلكتروني فيفضل إستخادمها ويجب أن تكون إستضافة جيدة وأن يكون البريد الإلكتروني يحوي ال domain الخاص بك.

ويمكنك قراءة الإجابة التالية فقد تساعدك في حل المشكلة لديك :

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

لتفادي هذا الأمر يجب استخدام خادم بريد موثوق به بحيث يكون معدّا بشكل صحيح وأفضل الطرق من خلال إعداد سجلات SPF و DKIM و DMARC ففائدتها هي كالتالي:

  • SPF: يساعد في التحقق من أن الخادم المُرسل مصرح له بإرسال البريد.
  • DKIM: يضيف توقيعا رقميا للتحقق من صحة الرسائل.
  • DMARC: يحدد كيفية التعامل مع الرسائل التي تفشل في اختبارات SPF أو DKIM.

فتكوين سجلات DNS بشكل صحيح ضروري لمصادقة بريدك الإلكتروني يمكنك التسجيل في SPF (Sender Policy Framework) وDKIM (DomainKeys Identified Mail) وDMARC (Domain-based Message Authentication, Reporting, and Conformance) كي تساعد في تحسين مصداقية بريدك الإلكتروني.

كما يجب أن تتجنب العناوين النصية العشوائية، وأن تقلل من الروابط.

كما أنصح باختبار البريد الإلكتروني يمكنك استخدام أدوات مثل Mail Tester لتقييم رسائل البريد الإلكتروني الخاصة بك ومعرفة الأسباب التي قد تؤدي إلى تصنيفها كبريد غير مرغوب فيه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...