简体   繁体   English

PHP联系表格:如果不是短则不发送西里尔字母

[英]PHP contact form: cyrillic letter not being sent if it is not short

I am making a contact form on my website and, trying to submit it, I get two outcomes: 我正在网站上制作联系表格,尝试提交该表格,有两个结果:
1. I wrote email in english, and, no matter how long it is, it is sent perfectly fine. 1.我用英语写了一封电子邮件,无论它有多长,它都可以很好地发送。
2. I wrote it in russian. 2.我用俄语写的。 If it is shorter than about 10 symbols - I get the email and it is even correctly rendered. 如果它少于10个符号-我会收到电子邮件,甚至可以正确呈现。 If it is longer than that - I just never get this email! 如果超过此时间-我将永远不会收到此电子邮件!

my html header includes: 我的html标头包括:

  <meta charset="UTF-8" name="viewport" HTTP-EQUIV="Pragma">

my form: 我的表格:

  <form method="post" action="a.php">
    <input type="text" name="name">
    <input type="submit">
  </form>

my a.php: 我的a.php:

<?php

$name = $_POST['name'];

$header = "From: Hi";
$header .= "Content-Type: text/plain; charset=utf-8";

$subject = "This is letter";
$email_to = "***my email***";
$message = "Name: $name."

mail($email_to, $subject, $message, $header);

?>

Please help, I don't have a clue on why is that and how to fix it. 请帮忙,我不知道这是为什么以及如何解决。

$subject = '=?UTF-8?B?' . base64_encode($subject) . '?='; 

What base64_encode() does is best explained in PHP manual : PHP手册中最好解释了base64_encode()作用:

base64_encode() is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies. base64_encode()旨在使二进制数据在不经过8位清除的传输层(例如邮件正文)的传输中幸存下来。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM