我的邮件功能返回成功,并且邮件中带有法语口音时未收到邮件

时间:2019-07-29 22:05:53

标签: php ajax email accent-sensitive

因此,我有一个脚本,可以从网页上的表单发送邮件。用户只需输入他的邮件地址,消息和姓名。

首先,我将邮件发送到我的联系地址。 (这工作正常)之后,我将邮件发送到用户的邮件地址。 (这不起作用)

最后一个mail函数返回成功,但是用户没有收到邮件。

我试图记录所有内容,但我不知道为什么可能发送了邮件但没有收到邮件。

当我体内带有“ repondons”之类的法国口音时,邮件不会发送,但是当它只是“ repondons”时,它会起作用。我不明白为什么,但是带重音会更好

<?php
    // site owner
    $site_name = 'just-request.fr';
    $sender_domain = 'contact@just-request.fr';
    $to = 'contact@just-request.fr';


    // contact form fields
    $name = trim( $_POST['name'] );
    $email = trim( $_POST['email'] );
    $subject = trim( $_POST['subject'] );
    $message = trim( $_POST['message'] );


    // check for error
    $error = false;

    if ( $name === "" ) { $error = true; }

    if ( $email === "" ) { $error = true; }

    if ( $subject === "" ) { $error = true; }

    if ( $message === "" ) { $error = true; }


    // if no error, then send mail
    if ( $error == false )
    {
        $body = "Name: $name \n\nEmail: $email \n\nMessage: $message";

        $headers = "From: " . $site_name . ' <' . $sender_domain . '> ' . "\r\n";
        $headers .= "Reply-To: " . $name . ' <' . $email . '> ' . "\r\n";

        $mail_result = mail( $to, utf8_decode($subject), utf8_decode($body), $headers );

        if ( $mail_result == true )
        {
            $body = "Bonjour,\n\n";
            $body .= "Merci de votre mail, nous le prenons en compte et vous repondrons des que possible.\n\n";
            $body .= "Cordialement,\n";
            $body .= "L'equipe Request. ";

            $subject = "Réponse automatique";

            $new_mail_result = mail( $email, utf8_decode($subject), utf8_decode($body), $headers );

            if ( $new_mail_result == true )
            {
                echo 'success';
            }
            else
            {
                echo 'unsuccess';
            }
        }
        else
        {
            echo 'unsuccess';
        }
    }

    else
    {
        echo 'error';
    }

1 个答案:

答案 0 :(得分:1)

尝试使用mb_send_mail()代替mail()
mb_language()设置为German/deISO-8859-15)或English/enISO-8859-1)。
ISO-8859-15ISO-8859-1都包含法文多余的字母。
ISO-8859-15升级后,ISO-8859-1Euro

https://www.php.net/manual/en/function.mb-send-mail.php

  

发送电子邮件。标头和消息根据mb_language()设置进​​行转换和编码。它是mail()的包装函数,因此也请参见mail()以获取详细信息。


评论:我错过了mb_language()UTF-8选项,其编码为quoted-printable
对于大多数(欧洲)“几乎ASCII”语言特定的字母来说,这会很好。