网页自动提交Form表单的方法

最近做网站运营用到了邮件营销,使用了搜狐的sendcloud邮件代发平台。要想使用sendcloud平台发送邮件给客户,就必须调用他们的API接口进行批量发送,那么问题来了。sendcloud提供了好几种编程语言可以调用API进行发送,有PHP、python、C#等几种,但上述语言我都不太懂,虽然代码不复杂,但由于语法基础需要从头学,加上平台提供了纯HTML的API发送方法,就打算放弃用那些编程语言来实现,而只是采用纯HTML来实现邮件发送。

网页自动提交Form表单的方法_第1张图片

纯HTML的发送很简单,无非是一个

表单 post方式提交到API接口,表单中用各种存放邮件发送的各项参数,submit按钮触发后即可发送邮件。本人虽然不会编写专业的程序自动调用api批量发送邮件,但使用ASP程序,读取需要发送的邮件列表,然后逐个生成HTML表单进行发送,却也并不困难。但关键问题是,对于已经由ASP生成的包含不同客户邮件地址HTML代码,如何逐个地触发submit进行自动提交呢。不可能手工去点击吧?

通过请教百度师父,问题的到了解决。只需要在HTML文档中加入一段JS语句就可以实现了。如下所示:

 

需要说明的是,上述代码中的form1应该与需要自动提交的表单form的name属性保持一致,方可触发提交。也就是from表单必须有name属性,并且其值与JS中相应的值完全一样。JS中的setTimeout()函数,显然是一个延时的函数,其第二个参数,即为延时的时间,单位是毫秒,上述代码中的10000即为10秒钟。

当然如果是使用ASP批量生成需要逐个提交的表单,还需要考虑多个表单在不同时间(最好是间隔一定相同的时间)先后顺序提交的问题,以及多个form的name属性与多个JS中的setTimeout()函数一一对应的问题。这个需要使用ASP语言,在服务器端通过变量来实现,下面我们来看一段完整的代码:

<%
	Dim Fso
	Dim myFile
	Set Fso = Server.CreateObject("Scripting.FileSystemObject")
	Set myFile = Fso.OpenTextFile(Server.MapPath("a.txt"),1,True)
	'A.TXT和ASP程序在同个目录下,如果没在一个目录,可以用绝对路径,把上一行的a.txt改为:d:\a.txt
	Dim nnn
	nnn = 0
	While Not myFile.AtEndOfStream
	Email = myFile.ReadLine '取出一行数据存放到Email变量中。
%>	
	  	
	
		

apiUser:

apiKey:

to:

from:

fromName:

replyTo:

cc:

bcc:

subject:

html:

<% nnn = nnn + 1 Wend myFile.Close Set myFile = Nothing Set Fso = Nothing %>

如上所示,通过定义nnn这个变量,并让其自动计数,来实现JS代码与form表单的一一对应。同时,nnn变量还可以用来控制时间间隔,实现相同间隔时间内自动触发提交表单,即为setTimeout("document.form<%=nnn%>.submit()",2000+120000*<%=nnn%>)中的2000+120000*<%=nnn%>这里。

你可能感兴趣的:(JavaScript,ASP,HTML)