1

メールを受信したときにutf-8を機能させようとしています。フォームが入力されると、文字はコードとして表示されます。 ç /Ç は &$ を表示ます。

「 header('Content-Type: text/html;charset=UTF-8'); 」を使用してみましたが、まだ機能していません。どうもありがとうございました...

これは私のコードです...

<?php

    //Get Data do Site
    $name = strip_tags($_POST['name']);
    $email = strip_tags($_POST['email']);
    $service = strip_tags($_POST['service']);
    $phone = strip_tags($_POST['phone']);
    $phoneconfirm = strip_tags($_POST['phoneconfirm']);
    $priority = strip_tags($_POST['priority']);
    $subject = strip_tags($_POST['subject']);
    $message = strip_tags($_POST['message']);

        // Send Message
    header('Content-Type: text/html;charset=UTF-8');
    mail( "THEEMAIL@GOES.HERE", "Via Website",
    "De: $name\n E-Mail: $email\n Serviço: $service\n Telefone/Celular: $phone\n Ligar/Retornar: $phoneconfirm\n Prioridade: $priority\n Assunto: $subject\n Mensagem:\n $message",
    "Para: WebSite");
    ?>

それは特別にそのように設計されています。Apple は、ユーザーが自分の望むものを常に決定すべきであるという考えを持っています。そのため、ユーザーはいつでも MDM に登録したり、MDM から登録解除したりできます。

ただし、この場合、MDM プロファイルを削除すると、企業データへの制限とアクセスの両方が失われます (Exchange プロファイルは、MDM を介してインストールされた場合は削除されます。VPN アクセス、WiFi アクセスなどについても同様です)。 .

MDMのドキュメントでかなり詳しく説明されています。

一般的に言えば、企業に属し、常に制限されていると思われるデバイスのサポートには適していませんでした。現在、彼らは徐々にこの方向に動いています。

ところで。iOS 7 では、監視対象デバイス向けにいくつかの新しい変更が行われています。あなたが探しているものを手に入れることができると信じています。WWDC 2013 ビデオにアクセスできる場合は、モバイル デバイス セッションの管理をご覧ください。

更新 1

試したことはありませんが、監視対象のデバイスにロックされた MDM プロファイルをインストールできるため、この MDM プロファイルを削除することはできません。

4

7 に答える 7

3

そこにメールヘッダーを設定しているのではなく、httpヘッダーを設定しています。この関数headerは未加工の HTTP ヘッダーを送信しています。送信しているメールに対しては何もしていません。

   header('Content-Type: text/html;charset=UTF-8');

ヘッダー"Content-Type: text/html; charset=UTF-8" (HTML メール本文の場合) または"Content-Type: text/plain; charset=UTF-8" (プレーン テキスト メール本文の場合)を追加する必要があります。あなたのmail機能に。このような。

$headers = array("Content-Type: text/html; charset=UTF-8");
mail($to, $subject, $message, $headers)

さらに、電子メールの場合、各行は単に改行 (\n) を使用するのではなく、CRLF (\r\n) で区切る必要があります。最終結果の完全な例は、次のようになります。

<?php

    $crlf = "\r\n";

    //Get Data
    $name = strip_tags($_POST['name']);
    $email = strip_tags($_POST['email']);
    $service = strip_tags($_POST['service']);
    $phone = strip_tags($_POST['phone']);
    $phoneconfirm = strip_tags($_POST['phoneconfirm']);
    $priority = strip_tags($_POST['priority']);
    $subject = strip_tags($_POST['subject']);
    $message = strip_tags($_POST['message']);

    // Parse/Format/Verify Data
    $to      = "THETOEMAIL@GOES.HERE";
    $from    = 'THEFROMEMAIL@GOES.HERE';
    $subject = "Via Website";
    $message = "De: $name$crlf E-Mail: $email$crlf Serviço: $service$crlf
         Telefone/Celular: $phone$crlf Ligar/Retornar: $phoneconfirm$crlf 
         Prioridade: $priority$crlf Assunto: $subject$crlf Mensagem:$crlf 
         $message";

    // Setup EMAIL headers, particularly to support UTF-8
    // We set the EMAIL headers here, these will be sent out with your message
    // for the receiving email client to use.
    $headers = 'From: ' . $from  . $crlf .
               'Reply-To: ' . $from  . $crlf .
               'Content-Type: text/plain; charset=UTF-8' .  $crlf .
               'Para: WebSite'  .  $crlf .
               'X-Mailer: PHP/' . phpversion();

    // Then we pass the headers into our mail function
    mail($to, $subject, $message, $headers);
?>

参照:

于 2013-09-12T13:29:42.620 に答える
0

フィールドに対してこの構文を試してください。フランス語のアクセントを送信しようとしたときに、まったく同じ問題が発生しました。

$variable = utf8_encode(htmlentities($_POST['variable'], ENT_QUOTES, "UTF-8"));

上記はフォーム フィールドを取得し、それを UTF-8 として正しくエンコードされた変数に配置します。

あなたの例では、それに応じて変更したので、これを試してください:

<?php

$name           = utf8_encode(htmlentities($_POST['name'], ENT_QUOTES, "UTF-8"));
$email          = utf8_encode(htmlentities($_POST['email'], ENT_QUOTES, "UTF-8"));
$service        = utf8_encode(htmlentities($_POST['service'], ENT_QUOTES, "UTF-8"));
$phone      = utf8_encode(htmlentities($_POST['phone'], ENT_QUOTES, "UTF-8"));
$phoneconfirm   = utf8_encode(htmlentities($_POST['phoneconfirm'], ENT_QUOTES, "UTF-8"));
$priority       = utf8_encode(htmlentities($_POST['priority'], ENT_QUOTES, "UTF-8"));
$subject        = utf8_encode(htmlentities($_POST['subject'], ENT_QUOTES, "UTF-8"));
$message        = utf8_encode(htmlentities($_POST['message'], ENT_QUOTES, "UTF-8"));

// Send Message
header('Content-Type: text/html;charset=UTF-8');
mail( "THEEMAIL@GOES.HERE", "Via Website",
"De: $name\n E-Mail: $email\n Serviço: $service\n Telefone/Celular: $phone\n Ligar/Retornar: $phoneconfirm\n Prioridade: $priority\n Assunto: $subject\n Mensagem:\n $message",
"Para: WebSite");

?>

これがあなたを助けることを願っています!

がんばれ、マイキー。

于 2013-09-12T14:14:03.600 に答える
0

外部クラスを使用したくない場合は、PHP マニュアル ページの例に従ってください。基本的に、UTF-8 をメール ヘッダー (ブラウザ ヘッダーではなく) に追加する必要があります。

$headers = 配列
    (
        'MIMEバージョン: 1.0',
        'コンテンツ タイプ: テキスト/html; charset="UTF-8";',
        'Content-Transfer-Encoding: 7bit',
        '日にち: ' 。date('r', $_SERVER['REQUEST_TIME']),
        'メッセージ ID: ',
        'から: ' 。$から、
        'に返信: ' 。$から、
        '復路: ' 。$から、
        「X-Mailer: PHP v」 . phpバージョン()、
        「X-Originating-IP:」。$_SERVER['SERVER_ADDR'],
    );

    mail($to, '=?UTF-8?B?' . base64_encode($arr['subject']) . '?=', $arr['message'], implode("\n", $headers) );
于 2013-09-12T13:59:01.447 に答える
0

このheader()関数は、ページを読み込んでいる Web ブラウザーに HTTP ヘッダーを送信するためのものです。経由で送信される電子メール コンテンツにはまったく影響しませんmail()

を使用してメール ヘッダーを送信するmail()には、正しい形式で手動で作成する必要があります。

これを正しく行うのは難しく、非常に厄介なコードになる可能性があるため、代わりにPHPMailerSwiftmailerなどのまともなメーラー クラスを使用することを検討することをお勧めします。どちらの方法でも、はるかに簡単な方法でメール ヘッダーを指定できます。 .

たとえば、PHPMailer を使用すると、コードは次のようになります。

$mail = new PHPMailer();
$mail->From = $from;
$mail->AddAddress($to);
$mail->Body = "......";
$mail->Subject = "....";
$mail->CharSet="UTF-8";    //see, very easy in phpMailer!
$mail->Send();

それが役立つことを願っています。

于 2013-09-12T13:32:47.090 に答える