WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章WAP教程WAP教程构建WAP邮件发送服务器

构建WAP邮件发送服务器
作者:郑伟  来源:yesky  发布时间:2005-11-29 11:15:58

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: Can't 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: Can't 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("

[1] [2] [3] [4]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码