|
WAP(无限通讯协议)是在数字移动电话,PDA和计算机之间进行通讯的一种标准。因此构建WAP邮件发送服务器将具有很广泛的应用前景和很高的商业价值。下面就是一个使用Java编写的Servlet程序,通过一些简单的设置,你就可以使用它从WAP手机或任何支持WML的PDA上发送Email了。 用法是: http://your_host/servlet/WapMailer?template_file 解释: Template文件是一个描述邮件设置和模板的文本文件。你可以在这个文件中设置SMTP服务器的域名和端口,以及信件的相关内容的参数。根据Template文件设置的信息,WAP服务器将动态生成相应 的WML页面。 在描述你的信件的时候,也可以使用变量: $from,$to, $subject,$body.这些变量会被提交的表单的相应内容代替。当你在WML中提交表单时,邮件也将动态生成。你也可以粘贴一些文件,比如公司的价目表、你的履历表等等。 Template文件可以采用非常自由的格式,但是每一个参数的描述都必须另起一行。 现把参数列在下面: Mailhost:SMTP服务器名,必须填写。 PORT:SMTP服务器端口。 Domain: 域名,必须填写。 From: 发信人地址。 T 收信人地址。 Subject: 邮件主题。 Body: 邮件内容。 Attach: 设置粘贴的文件列表。 Encoding: 字符集编码,默认值为ISO-8859-1。 例如:最简单的设置文件: Mailhost:smtp.abcdef.com Domain:abcdef.com Port:25 From:$from T$to Subject:$subject Body:$body 又如:对于某些短消息服务,可以描述To为T$to@your_service_host ,并且在邮件表单收信人地址中仅写对方的手机号码。你还可以给任何域设置常量值,如:Tsupport@abcdef.com,在生成的WML表单中这个域就将被省略。 在描述body参数时,也可以使用现成的文本文件,方法是在body中加入: $file=path_to_some_text_file ,该文件的内容将被加进信中。当你设置好粘贴文件后,你就可以使用文件列表了。文件名应该用逗号分隔开。 需注意:由于手机及PDA中的WAP是全球应用的,因此标准字符集编码采用ISO-8859-1,而我们平时使用汉字是用GB2312编码,不经过内码转化将会出现乱码,造成手机用户无法阅读,因此需要把编码设置成GB2312。 源程序:WapMailer.java,将其编译成.class文件 import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class WapMailer extends HttpServlet { private Hashtable getTemplate(String s) { Hashtable hashtable = (Hashtable)cfgs.get(s); if(hashtable == null) { hashtable = new Hashtable(); readTemplateFile(s, hashtable); cfgs.put(s, hashtable); } else { File file = new File(s); String s1 = (String)hashtable.get(edt); String s2 = String.valueOf(file.lastModified()); if(!s1.equals(s2)) { hashtable = new Hashtable(); readTemplateFile(s, hashtable); cfgs.remove(s); cfgs.put(s, hashtable); } } return hashtable; } public void init(ServletConfig servletconfig) throws ServletException { super.init(servletconfig); NEWLINE = System.getProperty(line.separator); cfgs = new Hashtable(); System.out.println(WAP Mailer); } public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse) throws ServletException, IOException { boolean flag = true; boolean flag1 = true; boolean flag2 = true; boolean flag3 = true; String s5 = HttpUtils.getRequestURL(httpservletrequest).toString(); int i; if((i = s5.indexOf(?)) > 0) s5 = s5.substring(0, i); String s = httpservletrequest.getQueryString(); httpservletresponse.setContentType(text/vnd.wap.wml); PrintWriter printwriter = httpservletresponse.getWriter(); printwriter.println(); if(s == null) { printwriter.println(); printwriter.println(); printwriter.println( ); printwriter.println(WapMailer: Cant read template file); printwriter.println( ); printwriter.println(); printwriter.println(); printwriter.flush(); printwriter.close(); return; } Hashtable hashtable = getTemplate(s); if(hashtable.size() == 0) { printwriter.println(); printwriter.println(); printwriter.println( ); printwriter.println(WapMailer: Cant read template file); printwriter.println( ); printwriter.println(); printwriter.println(); printwriter.flush(); printwriter.close(); return; } flag = usedParameter($from, hashtable); flag1 = usedParameter($to, hashtable); flag2 = usedParameter($subject, hashtable); flag3 = usedParameter($body, hashtable); String s1; if((s1 = (String)hashtable.get(FROM)) == null) s1 = ; else if(s1.indexOf($) >= 0) s1 = ; String s2; if((s2 = (String)hashtable.get(TO)) == null) s2 = ; else if(s2.indexOf($) >= 0) s2 = ; String s3; if((s3 = (String)hashtable.get(SUBJECT)) == null) s3 = ; else if(s3.indexOf($) >= 0) s3 = ; String s4; if((s4 = (String)hashtable.get(BODY)) == null) s4 = ; else if(s4.indexOf($) >= 0) s4 = ; printwriter.println(); printwriter.println(); printwriter.println(); printwriter.println(); if(flag) printwriter.println(); else printwriter.println(); if(flag1) printwriter.println(); else printwriter.println(); if(flag2) printwriter.println(); else printwriter.println(); if(flag3) printwriter.println(); else printwriter.println(); printwriter.println(); printwriter.println(); if(flag) printwriter.println( From: ); if(flag1) printwriter.println( T emptyok=\false\/> ); if(flag2) printwriter.println( Subject: \ emptyok=\true\/> ); if(flag3) printwriter.println( Message: \ emptyok=\false\/> ); printwriter.println(); printwriter.println(); printwriter.flush(); printwriter.close(); } [1] [2] [3] 下一页
[1] |