当消息中有法语口音时,我的邮件功能返回成功并且未收到邮件[重复]

Posted

技术标签:

【中文标题】当消息中有法语口音时,我的邮件功能返回成功并且未收到邮件[重复]【英文标题】:My mail function return success and the mail is not received when there is french accent in the message [duplicate] 【发布时间】:2019-12-07 06:32:28 【问题描述】:

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

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

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

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

当我在正文中带有“répondons”之类的法国口音时,邮件不会发送,但是当它只是“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';
    

【问题讨论】:

为什么不utf8_encode 它也不起作用。当我在 $body 中有口音时,它就不起作用了。我没有收到邮件 哪个服务是电子邮件不起作用? Gmail、雅虎? 发件人是 Hostinger 上的主机,第一封收到的邮件也在 Hostinger 上,而那封不起作用的我必须将其发送到 Hotmail 和 Gmail 帐户 您检查过垃圾邮件文件夹吗? 【参考方案1】:

尝试使用mb_send_mail() 而不是mail()。 将mb_language() 设置为German/de (ISO-8859-15) 或English/en (ISO-8859-1)。ISO-8859-15 和 ISO-8859-1 都包含法语额外字母。ISO-8859-15 在 Euro 升级后是 ISO-8859-1。

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

发送电子邮件。标头和消息根据mb_language() 设置进行转换和编码。它是mail() 的包装函数,有关详细信息,另请参阅mail()。


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

【讨论】:

感谢成功!

以上是关于当消息中有法语口音时,我的邮件功能返回成功并且未收到邮件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用法语口音对数组进行 json_encode?

当订单中有缺货商品时,在 WooCommerce 电子邮件通知中显示消息

消息队列-简单了解

我的 iOS 应用程序在调试时默认为法语,尽管它被配置为英语

在 c# 中使用 gmail API 修改消息标签时权限不足 [403] 错误

带有pdf附件和html消息的php邮件功能