GVKun编程网logo

WordPress Contact-Form 7 收到的邮件内容为空(wordpress邮件发送)

4

本文将分享WordPressContact-Form7收到的邮件内容为空的详细内容,并且还将对wordpress邮件发送进行详尽解释,此外,我们还将为大家带来关于.Netmultipart/form-

本文将分享WordPress Contact-Form 7 收到的邮件内容为空的详细内容,并且还将对wordpress邮件发送进行详尽解释,此外,我们还将为大家带来关于.Net multipart / form-data form enctype和UTF-8“special”characters => (MVC w / HttpPostedFileBase)、Ajax 提交 form ENCTYPE="multipart/form-data" 的方法、application/x-www-form-urlencoded 和 multipart/form-data 是客户端在向服务器发送数据时处理的仅有的两种特殊内容类型吗?、application/x-www-form-urlencoded与multipart/form-data(尚未自己验证)的相关知识,希望对你有所帮助。

本文目录一览:

WordPress Contact-Form 7 收到的邮件内容为空(wordpress邮件发送)

WordPress Contact-Form 7 收到的邮件内容为空(wordpress邮件发送)

如何解决WordPress Contact-Form 7 收到的邮件内容为空

这是我的联系表格 7 配置 邮件


bilal@truishop.com 来自
[你的名字]bilal@truishop.com 主题 [你的主题] 附加标题
消息正文
来自:[您的姓名] 主题:[你的主题]

消息正文: [您的留言]

这封电子邮件是通过 [_site_title] ([_site_url]) 上的联系表格发送的

当我收到邮件时,任何内容都没有显示一些像

发件人:哈马德 主题:[你的主题]

消息正文: [您的留言]

这封电子邮件是通过 Bilal Asghar (https://portfolio.truishop.com) 上的联系表发送的

如何解决这个问题

解决方法

您的输入名称与您使用的名称不同。您需要使用与表单中使用的输入名称相同的输入名称。 对于您的情况,请在消息框中使用以下代码

[您的姓名] bilal@truishop.com

主题 [主题]

附加标题

邮件正文

发件人:[您的姓名] 主题:[主题]

消息正文:[消息]

这封电子邮件是通过 [_site_title] ([_site_url]) 上的联系表格发送的

.Net multipart / form-data form enctype和UTF-8“special”characters => (MVC w / HttpPostedFileBase)

.Net multipart / form-data form enctype和UTF-8“special”characters => (MVC w / HttpPostedFileBase)

目标:

将带有UTF-8字符的CSV文件上传/发布到MVC操作,读取数据并将其粘贴到数据库表中.

问题:

只有纯文本字符才能通过.像á这样的UTF-8“特殊”字符没有正确传递,在代码和数据库中它们呈现为此字符=> .

更多:

我确信这不是我的C#代码的问题,尽管我已经包含了下面的重要部分.

我认为问题是上传的文件是以纯文本或“纯文本”MIME类型编码的,但我可以通过将文件扩展名更改为.html来更改它

摘要:

如何获得一个enctype属性设置为“multipart / form-data”的表单,以正确解释已发布文件中的UTF-8字符?

研究:

从我的研究来看,这似乎是一个普遍的问题,没有一个共同的明确解决方案.

我发现了比.Net更多的java和PHP解决方案.

> csvFile变量的类型为HttpPostedFileBase
>这是MVC动作签名

[HttpPost]

public ActionResult LoadFromCsv(HttpPostedFileBase csvFile)

我试过的事情:

1)

using (Stream inputStream = csvFile.InputStream)
{
    byte[] bytes = ReadFully(inputStream);
    string bytesConverted = new UTF8Encoding().GetString(bytes);
}

2)

using (Stream inputStream = csvFile.InputStream)
{
    using (StreamReader readStream = new StreamReader(inputStream,Encoding.UTF8,true))
    {
        while (!readStream.EndOfStream)
        {
            string csvLine = readStream.ReadLine();
            // string csvLine = new UTF8Encoding().GetString(new UTF8Encoding().GetBytes(readStream.ReadLine())); // stupid... this can not be the way!
        }
    }
}

3)

<form method="post" enctype="multipart/form-data" accept-charset="UTF-8">

4)

<input type="file" id="csvFile" name="csvFile" accept="UTF-8" />

<input type="file" id="csvFile" name="csvFile" accept="text/html" />

5)

当文件具有.txt扩展名时,HttpPostedFileBase的ContentType属性为“text / plain”

当我将文件扩展名从.txt更改为.csv时,HttpPostedFileBase的ContentType属性为“application / vnd.ms-excel”

当我将文件扩展名更改为.html时,HttpPostedFileBase的ContentType属性为“text / html” – 我认为这将成为赢家,但事实并非如此.

在我的灵魂中,我不得不相信这个问题有一个简单的解决方案.让我感到惊讶的是,我无法自己解决这个问题,在文件中上传UTF-8字符是一项常见任务!我为什么在这里失败?!?!

也许我必须在IIS中为网站调整mime类型?

也许我需要不同的DOCTYPE / html标签/元标签?

@Gabe –

这是我的帖子在小提琴手中的样子.这真的很有趣,因为 显然是白天,就在后期值.

http://localhost/AwesomeGeography/GeoBytesCities/LoadFromCsv?adsf HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive
Referer: http://localhost/AwesomeGeography/GeoBytesCities/LoadFromCsv?adsf
Content-Type: multipart/form-data; boundary=---------------------------199122566726299
Content-Length: 354

-----------------------------199122566726299
Content-disposition: form-data; name="csvFile"; filename="cities_test.html"
Content-Type: text/html

"CityId","CountryID","RegionID","City","Latitude","Longitude","TimeZone","DmaId","Code"
3344,10,1063,"Luj�n de Cuyo","-33.05","-68.867","-03:00","LDCU"
-----------------------------199122566726299--

解决方法

根据给出的信息,我猜测问题在于文件编码本身 – 而不是代码.

我运行了一个简单的测试来证明这一点:

>我从Excel导出了一个包含特殊字符的简单csv文件.
>然后,我通过以下表单和操作方法上传它.

形成

<form method="post" action="@Url.Action("UploadFile","Home")" enctype="multipart/form-data">
    <input type="file" id="file" name="file" />
    <input type="submit" />
</form>

行动方法

[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
    using (StreamReader reader = new StreamReader(file.InputStream,System.Text.Encoding.UTF8))
    {
        string text = reader.ReadToEnd();
    }

    return RedirectToAction("Index");
}

在这种情况下,我遇到了与你相同的问题 – 特殊字符被替换为 .

我在记事本中打开文件,并在那里正确显示特殊字符,所以它似乎不是文件问题,但是当我打开“另存为”对话框时,所选的编码是“ANSI”.我把它切换到UTF-8并保存,通过上传程序运行,一切正常.

Ajax 提交 form ENCTYPE=

Ajax 提交 form ENCTYPE="multipart/form-data" 的方法

转载:通过Ajax方式上传文件,使用FormData进行Ajax请求 (http://yunzhu.iteye.com/blog/2177923 )


该方法通过 formData的方式进行处理,比较方便易懂!!

application/x-www-form-urlencoded 和 multipart/form-data 是客户端在向服务器发送数据时处理的仅有的两种特殊内容类型吗?

application/x-www-form-urlencoded 和 multipart/form-data 是客户端在向服务器发送数据时处理的仅有的两种特殊内容类型吗?

有 2 种内容类型是特殊的,并且与其他内容类型不同。

没有。 HTML 表单支持这 2 种内容类型(以及 text/plain,它毫无意义且您永远不应使用)。

使用 application/x-www-form-urlencoded,客户端的数据以某种方式编码(更改)。

对于常规 HTML 表单,所有编码都会以某种方式更改数据(即使它是 text/plain 的“使所有内容都变成 name=value 并在每个项目之间换行)。>

对于 multipart/form-data,客户端将使用称为边界的东西作为分隔符。

是的。 text/plain 使用新行。 application/x-www-form-urlencoded 使用 &。一切都有定界符。 (您只是无法在 text/plain 中的数据中区分新行的分隔符,这就是它无用的原因)。

因此,客户端可以在单个请求中同时发送许多内容,并插入一些边界字符串作为分隔符。

客户端可以使用这三种编码中的任何一种发送很多东西。

不同的是 multipart 支持文件。

Multipart 允许您将标题放在每个部分的数据之前,因此您可以包含文件名和内容类型等几乎对于支持文件必不可少的内容。

对于客户端指定的所有其他内容类型 (xmlhttp.setRequestHeader) ,例如application/json、application/pdf、application/image、application/octet-stream blablabla,客户端不会改变任何东西,只是将原始(二进制)数据放入 http 请求正文并将其发送到服务器。

显式设置内容类型对 XMLHttpRequest 对象将如何处理您传递给 send() 的内容没有影响。

如果您传递一个字符串,它不会以任何方式对其进行编码(因此您需要自己将数据编码到字符串中,并为您选择的编码设置正确的内容类型标头)。如果您传递一个 FormData 对象,那么它会将其编码为多部分。等

因为如果我理解正确,网络服务器例如Nginx 或 Apache 不会对数据做任何事情。他们只是将数据传递给连接到他们的服务器端应用程序。

通常情况如此,但有些过于简单化了。例如如果是使用运行在 Node.js 上的 Express.js 编写的,那么服务器端应用程序和服务器端应用程序之间可能没有区别。


总结

  • 表单总是对数据进行编码。 enctype 属性告诉他们如何做。
  • XMLHttpRequestfetch 可以对数据进行编码,但这取决于您传递给它们的值类型。如果是字符串,则必须对其进行编码并自行设置正确的 Content-Type。

application/x-www-form-urlencoded与multipart/form-data(尚未自己验证)

application/x-www-form-urlencoded与multipart/form-data(尚未自己验证)

原文地址:http://hi.baidu.com/nangegehao/item/45718900b0efe5d61ef04609

一,HTTP上传的基本知识

在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。下边是说明: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
补充form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application /x-www-form-urlencoded。

当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&amp; amp; amp;name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。

当action为post时候,浏览器把form数据封装到http body中,然后发送到server。

如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。但是如果有 type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上 Content-disposition(form-data或者file),Content-Type(默认为text/plain),name(控件 name)等信息,并加上分割符(boundary)。

二,使用中需要注意的地方

在AJAX往服务器上传数据是,设置了content-type为application/x-www-form-urlencoded,此时是对整个发 送内容作了编码,并不是对名字对应的值做了编码。因此,在服务器端,通过request.getParameter("name")的方式取值,是有问题 的。

有两种解法办法:

1)改服务器端: 采用流的方式硬编码

InputStream stream=request.getInputStream();
InputStreamReader isr=new InputStreamReader(stream);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();  
System.out.println(str);
str=URLDecoder.decode(str,"gb2312");
System.out.println(str);
br.close();


2)改客户端:更改数据发送结构

在往服务器上发数据的时候,使用name=escape(value)的方式组对

此时在服务器代码中,通过request.getParameter("name")获得的数值,就不用编码了

关于WordPress Contact-Form 7 收到的邮件内容为空wordpress邮件发送的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于.Net multipart / form-data form enctype和UTF-8“special”characters => (MVC w / HttpPostedFileBase)、Ajax 提交 form ENCTYPE="multipart/form-data" 的方法、application/x-www-form-urlencoded 和 multipart/form-data 是客户端在向服务器发送数据时处理的仅有的两种特殊内容类型吗?、application/x-www-form-urlencoded与multipart/form-data(尚未自己验证)等相关内容,可以在本站寻找。

本文标签: