PHPmailer 发送邮件但邮件为空

问题描述 投票:0回答:1

我使用 Nuxt 创建了自己的作品集页面,并使用 PHPMailer 来处理联系表单。我正在使用

axios.post
从联系表单发送数据。我可以在网络浏览器中看到我提供的数据已发送,但 PHP 代码无法从 POST 获取它们,因为邮件正在发送,但它是空白的。

PHP 代码:

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

require 'vendor/autoload.php'; // Ścieżka do autoload.php PHPMailer

// Sprawdź, czy otrzymano dane z formularza POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Odbierz dane z formularza
    $email = $_POST["email"];
    $subject = $_POST["subject"];
    $message = $_POST["message"];

    var_dump($_POST['email']);

    // Utwórz nowy obiekt PHPMailer
    $mail = new PHPMailer();
    $mail->CharSet = "UTF-8";
    $mail->SMTPDebug = 2;
    
    try {
        // Konfiguracja serwera SMTP
        $mail->isSMTP();
        $mail->Host = 'marcincymerman.pl'; // Tutaj wpisz adres serwera SMTP
        $mail->SMTPAuth = true;
        $mail->Username = 'xxxx'; // Tutaj wpisz adres e-mail do autoryzacji
        $mail->Password = 'xxxx'; // Tutaj wpisz hasło e-mail do autoryzacji
        $mail->SMTPSecure = 'tls';
        $mail->Port = 587;

        // Ustawienia wiadomości e-mail
        $mail->addAddress('[email protected]', 'Marcin Cymerman'); // Tutaj wpisz adres e-mail odbiorcy

        $mail->Subject = "New Contact Form Submission: $subject";
        $mail->Body = "Email: $email\nMessage: $message";

        // Wyślij wiadomość e-mail
        $mail->send();
        echo 'message has been send';
    } catch (Exception $e) {
        echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
    }
} else {
    echo 'Invalid request';
}
?>

HTML 表单:


<form class="contact-form items-center mt-[32px] space-y-[16px]" @submit.prevent="submitForm">
            <div
                class="input-box w-full translate-x-[100px] opacity-0 transition-transform-opacity duration-500"
                :class="{ 'text-red-500': v$.email.$error }"
            >
                <label for="email" v-if="locale == 'pl-PL'" class="font-semibold">Adres email:</label>
                <label for="email" v-else class="font-semibold">Email address:</label>
                <input
                    type="text"
                    name="email"
                    class="outline-none p-[5px] rounded-md bg-transparent border-[1px] border-gray-700 dark:border-gray-200"
                    :class="{ 'border-red-500': v$.email.$error }"
                    v-model="inputsDetails.email"
                />
                <span class="input-error" v-if="v$.email.$error">{{ $t('contactForm.emailErr') }}</span>
            </div>

            <div
                class="input-box w-full translate-x-[100px] opacity-0 transition-transform-opacity duration-500"
                :class="{ 'text-red-500': v$.subject.$error }"
            >
                <label for="topic" v-if="locale == 'pl-PL'" class="font-semibold">Temat:</label>
                <label for="topic" v-else class="font-semibold">Topic:</label>
                <input
                    type="text"
                    name="topic"
                    class="outline-none p-[5px] rounded-md bg-transparent border-[1px] border-gray-700 dark:border-gray-200"
                    :class="{ 'border-red-500': v$.subject.$error }"
                    v-model="inputsDetails.subject"
                />
                <span class="input-error" v-if="v$.subject.$error">{{ $t('contactForm.topicErr') }}</span>
            </div>

            <div
                class="input-box w-full translate-x-[100px] opacity-0 transition-transform-opacity duration-500"
                :class="{ 'text-red-500': v$.message.$error }"
            >
                <label for="message" v-if="locale == 'pl-PL'" class="font-semibold">Wiadomość:</label>
                <label for="message" v-else class="font-semibold">Message:</label>
                <textarea
                    type="text"
                    name="message"
                    class="resize-none p-[5px] outline-none rounded-md bg-transparent border-[1px] border-gray-700 dark:border-gray-200 overflow-hidden"
                    @keypress="resizeTextarea"
                    v-model="inputsDetails.message"
                    :class="{ 'border-red-500': v$.message.$error }"
                ></textarea>
                <span class="input-error" v-if="v$.message.$error">{{ $t('contactForm.messageErr') }}</span>
            </div>

            <input
                type="submit"
                :value="btnText"
                class="send-btn px-4 cursor-pointer py-2 font-semibold dark:border-gray-200 border-[1px] border-gray-700 rounded-md hover:bg-gray-700 hover:text-gray-200 dark:hover:bg-gray-200 dark:hover:text-gray-700 transition-all duration-300 translate-x-[100px] opacity-0"
            />
        </form>

Nuxt代码:

const sendMail = async () => {
    try {
        const response = await axios.post(
            'https://marcincymerman.pl/send_email.php',
            {
                email: inputsDetails.email,
                subject: inputsDetails.subject,
                message: inputsDetails.message,
            },
            {
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                },
            }
        )
        console.log(response.data)
    } catch (error) {
        console.error('Error:', error)
    }
}

SMTPDebug 的输出:

2024-02-09 11:58:54 SERVER -> CLIENT: 220 h29.seohost.pl ESMTP Exim 4.97.1 Fri, 09 Feb 2024 12:58:54 +0100
2024-02-09 11:58:54 CLIENT -> SERVER: EHLO marcincymerman.pl
2024-02-09 11:58:54 SERVER -> CLIENT: 250-h29.seohost.pl Hello host-18821022299.seohost-mail.eu [188.210.222.99]250-SIZE 209715200250-8BITMIME250-DSN250-PIPELINING250-PIPECONNECT250-AUTH PLAIN LOGIN250-STARTTLS250 HELP
2024-02-09 11:58:54 CLIENT -> SERVER: STARTTLS
2024-02-09 11:58:54 SERVER -> CLIENT: 220 TLS go ahead
2024-02-09 11:58:54 CLIENT -> SERVER: EHLO marcincymerman.pl
2024-02-09 11:58:54 SERVER -> CLIENT: 250-h29.seohost.pl Hello host-18821022299.seohost-mail.eu [188.210.222.99]250-SIZE 209715200250-8BITMIME250-DSN250-PIPELINING250-PIPECONNECT250-AUTH PLAIN LOGIN250 HELP
2024-02-09 11:58:54 CLIENT -> SERVER: AUTH LOGIN
2024-02-09 11:58:54 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2024-02-09 11:58:54 CLIENT -> SERVER: [credentials hidden]
2024-02-09 11:58:54 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2024-02-09 11:58:54 CLIENT -> SERVER: [credentials hidden]
2024-02-09 11:58:54 SERVER -> CLIENT: 235 Authentication succeeded
2024-02-09 11:58:54 CLIENT -> SERVER: MAIL FROM:<>
2024-02-09 11:58:54 SERVER -> CLIENT: 250 OK
2024-02-09 11:58:54 CLIENT -> SERVER: RCPT TO:<[email protected]>
2024-02-09 11:58:54 SERVER -> CLIENT: 250 Accepted
2024-02-09 11:58:54 CLIENT -> SERVER: DATA
2024-02-09 11:58:54 SERVER -> CLIENT: 354 Enter message, ending with "." on a line by itself
2024-02-09 11:58:54 CLIENT -> SERVER: Date: Fri, 9 Feb 2024 12:58:54 +0100
2024-02-09 11:58:54 CLIENT -> SERVER: To: Marcin Cymerman <[email protected]>
2024-02-09 11:58:54 CLIENT -> SERVER: From:
2024-02-09 11:58:54 CLIENT -> SERVER: Subject: New Contact Form Submission:
2024-02-09 11:58:54 CLIENT -> SERVER: Message-ID: <[email protected]>
2024-02-09 11:58:54 CLIENT -> SERVER: X-Mailer: PHPMailer 6.9.1 (https://github.com/PHPMailer/PHPMailer)
2024-02-09 11:58:54 CLIENT -> SERVER: MIME-Version: 1.0
2024-02-09 11:58:54 CLIENT -> SERVER: Content-Type: text/plain; charset=UTF-8
2024-02-09 11:58:54 CLIENT -> SERVER:
2024-02-09 11:58:54 CLIENT -> SERVER: Email:
2024-02-09 11:58:54 CLIENT -> SERVER: Message:
2024-02-09 11:58:54 CLIENT -> SERVER:
2024-02-09 11:58:54 CLIENT -> SERVER: .
2024-02-09 11:58:55 SERVER -> CLIENT: 250 OK id=1rYPWw-00000006d4W-40r8
2024-02-09 11:58:55 CLIENT -> SERVER: QUIT
2024-02-09 11:58:55 SERVER -> CLIENT: 221 h29.seohost.pl closing connection

仍然发送空白邮件。

file_get_contents('php://input') 的输出:

{email: '[email protected]', subject: 'dadad', message: 'Lorem ipsum, dolor sit amet consectetur adipisicin… consequuntur, suscipit laborum ab provident quo?'}
php phpmailer nuxtjs3
1个回答
0
投票

问题已解决。

我需要首先解码 json:

$data = json_decode(file_get_contents("php://input"), TRUE);

然后从 $data 变量中提取所需的数据:

    $email = $data['email'];
    $subject = $data['subject'];
    $message = $data['message'];
© www.soinside.com 2019 - 2024. All rights reserved.