• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
构建WAP邮件发送服务器
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
构建WAP邮件发送服务器
软件发布 构建WAP邮件发送服务器
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 网络技术 >> 邮件服务器架设与维护 >> 构建WAP邮件发送服务器

构建WAP邮件发送服务器

添加时间: 2007-10-4 15:24:18  作者: 邮件服务器教程  阅读次数:19   来源: http://www.d9soft.com

       

  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: 发信人地址。

  To: 收信人地址。

  Subject: 邮件主题。

  Body: 邮件内容。

  Attach: 设置粘贴的文件列表。

  Encoding: 字符集编码,默认值为ISO-8859-1。

  例如:最简单的设置文件:

  Mailhost:smtp.abcdef.com

  Domain:abcdef.com

  Port:25

  From:$from

  To:$to

  Subject:$subject

  Body:$body

又如:对于某些短消息服务,可以描述To为To:$to@your_service_host ,并且在邮件表单收信人地址中仅写对方的手机号码。你还可以给任何域设置常量值,如:To:support@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("");

 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("
To:  emptyok=\"false\"/>

");

if(flag2)

printwriter.println("
Subject:  "\" emptyok=\"true\"/>

");

if(flag3)

printwriter.println("
Message:  "\" emptyok=\"false\"/>

");

printwriter.println("");

printwriter.println("");

printwriter.flush();

printwriter.close();

}


public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse
httpservletresponse)

throws ServletException, IOException

{

PrintWriter printwriter = null;

Hashtable hashtable = null;

Hashtable hashtable1 = null;

String s = httpservletrequest.getQueryString();

httpservletresponse.setContentType("text/vnd.wap.wml");

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;

}

hashtable1 = getTemplate(s);

if(hashtable1.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;

}

if(hashtable1.get("PORT") == null hashtable1.get("FROM") == null
hashtable1.get("TO") == null hashtable1.get("MAILHOST") == null
hashtable1.get("DOMAIN") == null)

{

printwriter.println("");

printwriter.println("");

printwriter.println("
");

printwriter.println("WapMailer: Can't send mail. Check template file");

printwriter.println("

");

printwriter.println("");

printwriter.println("");

printwriter.flush();

printwriter.close();

return;

}

hashtable = new Hashtable();

String s1;

for(Enumeration enumeration = httpservletrequest.getParameterNames();
enumeration.hasMoreElements(); hashtable.put(s1.toUpperCase(),
decodeString(httpservletrequest.getParameter(s1),
httpservletrequest.getCharacterEncoding(), (String)hashtable1.get("ENCODING"))))

s1 = (String)enumeration.nextElement();

boolean flag = letterToNet(hashtable, hashtable1);

printwriter.println("");

printwriter.println("");

printwriter.println("
");

if(flag)

printwriter.println("WapMailer: your message has been send");

else

printwriter.println("WapMailer: Can't send mail");

printwriter.println("

");

printwriter.println("");

printwriter.println("");

printwriter.flush();

printwriter.close();

}

public String getServletInfo()

{

return "WapMailer mailto: waynezheng@chinaren.com";

}

private boolean letterToNet(Hashtable hashtable, Hashtable hashtable1)

{

smtpMail smtpmail = new smtpMail();

String s1 = prepareString((String)hashtable1.get("MAILHOST"), hashtable);

String s2 = prepareString((String)hashtable1.get("DOMAIN"), hashtable);

int i;

try

{

i = Integer.parseInt(prepareString((String)hashtable1.get("PORT"),
hashtable));

}

catch(Exception _ex)

{

return false;

}

if(s1 == null)

return false;

String s;

String s3;

if((s = (String)hashtable1.get("FROM")) == null)

s3 = (String)hashtable.get("FROM");

else

if(s.indexOf("$") < 0)

s3 = (String)hashtable.get("FROM");

else

s3 = prepareString(s, hashtable);

String s4;

if((s = (String)hashtable1.get("TO")) == null)

s4 = (String)hashtable.get("TO");

else

if(s.indexOf("$") < 0)

s4 = (String)hashtable.get("TO");

else

s4 = prepareString(s, hashtable);

if(smtpmail.open(s1, i) != 1)

return false;

smtpmail.setDomain(s2);

smtpmail.setFrom(s3);

smtpmail.setTo(s4);

if((s = (String)hashtable1.get("SUBJECT")) == null)

s = (String)hashtable.get("SUBJECT");

else

if(s.indexOf("$") < 0)

s = (String)hashtable.get("SUBJECT");

else

s = prepareString(s, hashtable);

smtpmail.addHeader("Subject", s);

if((s = (String)hashtable1.get("CC")) == null)

s = "";

else

s = prepareString(s, hashtable);

if(s.length() > 0)

smtpmail.addHeader("Cc", s);

if((s = (String)hashtable1.get("BODY")) == null)

s = (String)hashtable.get("BODY");

else

if(s.indexOf("$") < 0)

s = (String)hashtable.get("BODY");

else

s = prepareString(insertFiles(s), hashtable);

 

smtpmail.addData(s);

if((s = (String)hashtable1.get("ATTACH")) != null)

{

s = prepareString(s, hashtable);

for(StringTokenizer stringtokenizer = new StringTokenizer(s, " ,");
stringtokenizer.hasMoreTokens(); smtpmail.addAttachment(s))

s = stringtokenizer.nextToken();

}

if(smtpmail.transmit() != 1)

{

return false;

}

else

{

smtpmail.close();

return true;

}

}

private String insertFiles(String s)

{

String s1 = s.toUpperCase();

int i;

if((i = s1.indexOf("$FILE=")) < 0)

return s;

String s2;

if(i == 0)

s2 = "";

else

s2 = s.substring(0, i) + NEWLINE;

s1 = s.substring(i + "$FILE=".length());

i = s1.indexOf(NEWLINE);

String s3;

if(i < 0)

{

s3 = "";

}

else

{

s3 = s1.substring(i + NEWLINE.length());

s1 = s1.substring(0, i);

}

if(s1.startsWith("\""))

s1 = s1.substring(1);

if(s1.endsWith("\""))

s1 = s1.substring(0, s1.length() - 1);

try

{

BufferedReader bufferedreader = new BufferedReader(new
InputStreamReader(new FileInputStream(s1)));

while((s1 = bufferedreader.readLine()) != null)

s2 = s2 + s1 + NEWLINE;

bufferedreader.close();

}

catch(Exception _ex)

{

return s;

}

return s2 + insertFiles(s3);

}

private String prepareString(String s, Hashtable hashtable)

{

int i = s.indexOf("$");

String s1 = "";

if(i < 0 i == s.length() - 1)

return s;

for(StringTokenizer stringtokenizer = new StringTokenizer(s, "
,\t;:!@#%^~&*()-+_=\\/?<>" + NEWLINE, true); stringtokenizer.hasMoreTokens();)

{

String s2 = stringtokenizer.nextToken();

String s3;

if(s2.startsWith("$"))

{

if(s2.length() == 1)

s1 = s1 + s2;

else

if((s3 = (String)hashtable.get(s2.substring(1).toUpperCase())) != null)

s1 = s1 + s3;

else

s1 = s1 + s2;

}

else

{

s1 = s1 + s2;

}

}

return s1;

}


private boolean usedParameter(String s, Hashtable hashtable)

{

for(Enumeration enumeration = hashtable.keys(); enumeration.hasMoreElements();)

{

String s1 = (String)hashtable.get((String)enumeration.nextElement());

if(s1.indexOf(s) >= 0)

return true;

}

return false;

}

private void readTemplateFile(String s, Hashtable hashtable)

{

String s4 = "";

boolean flag = false;

try

{

BufferedReader bufferedreader = new BufferedReader(new
InputStreamReader(new FileInputStream(s)));

String s1;

while((s1 = bufferedreader.readLine()) != null)

{

s1 = s1.trim();

if(s1.length() > 0)

{

String s3 = s1.toUpperCase();

if(s3.startsWith("PORT:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("PORT");

hashtable.put("PORT", s1.substring("PORT:".length()).trim());

}

else

if(s3.startsWith("DOMAIN:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("DOMAIN");

hashtable.put("DOMAIN",
s1.substring("DOMAIN:".length()).trim());

}

else

if(s3.startsWith("TO:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("TO");

hashtable.put("TO", s1.substring("TO:".length()).trim());

}

else

if(s3.startsWith("CC:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("CC");

hashtable.put("CC", s1.substring("CC:".length()).trim());

}

else

if(s3.startsWith("SUBJECT:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("SUBJECT");

hashtable.put("SUBJECT",
s1.substring("SUBJECT:".length()).trim());

}

else

if(s3.startsWith("MAILHOST:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("MAILHOST");

hashtable.put("MAILHOST",
s1.substring("MAILHOST:".length()).trim());

}

else

if(s3.startsWith("FROM:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("FROM");

hashtable.put("FROM", s1.substring("FROM:".length()).trim());

}

else

if(s3.startsWith("REPLY:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("REPLY");

hashtable.put("REPLY", s1.substring("REPLY:".length()).trim());

}

else

if(s3.startsWith("ATTACH:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("ATTACH");

hashtable.put("ATTACH",
s1.substring("ATTACH:".length()).trim());

}

else

if(s3.startsWith("ENCODING:"))

{

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

flag = false;

s4 = "";

hashtable.remove("ENCODING");

hashtable.put("ENCODING",
s1.substring("ENCODING:".length()).trim());

}

else

if(s3.startsWith("BODY:"))

{

hashtable.remove("BODY");

flag = true;

s4 = s1.substring("BODY:".length()).trim();

}

else

if(flag)

s4 = s4 + NEWLINE + s1;

}

else

if(flag)

s4 = s4 + NEWLINE;

}

 

bufferedreader.close();

File file = new File(s);

hashtable.put("edt", String.valueOf(file.lastModified()));

}

catch(Exception _ex) { }

String s2;

if((s2 = (String)hashtable.get("PORT")) != null)

try

{

int i = Integer.parseInt(s2);

if(i <= 0)

hashtable.remove("PORT");

}

catch(Exception _ex)

{

hashtable.remove("PORT");

}

if((s2 = (String)hashtable.get("DOMAIN")) != null && s2.length() == 0)

hashtable.remove("DOMAIN");

if((s2 = (String)hashtable.get("REPLY")) != null && s2.length() == 0)

hashtable.remove("REPLY");

if((s2 = (String)hashtable.get("FROM")) != null && s2.length() == 0)

hashtable.remove("FROM");

if((s2 = (String)hashtable.get("TO")) != null && s2.length() == 0)

hashtable.remove("TO");

if((s2 = (String)hashtable.get("CC")) != null && s2.length() == 0)

hashtable.remove("CC");

if(hashtable.get("PORT") == null)

hashtable.put("PORT", "25");

if(hashtable.get("DOMAIN") == null)

hashtable.put("DOMAIN", "localhost");

if(hashtable.get("ENCODING") == null)

hashtable.put("ENCODING", "ISO-8859-1");

if(flag)

{

hashtable.remove("BODY");

hashtable.put("BODY", s4);

}

}

private String decodeString(String s, String s1, String s2)

{

String s3;

try

{

s3 = new String(s.getBytes(s1 != null ? s1 : "ISO-8859-1"), s2);

}

catch(Exception _ex)

{

s3 = s;

}

return s3;

}

public WapMailer()

{

}

private static final String MAILHOST = "MAILHOST";

private static final String PORT = "PORT";

private static final String DOMAIN = "DOMAIN";

private static final String FROM = "FROM";

private static final String TO = "TO";

private static final String CC = "CC";

private static final String SUBJECT = "SUBJECT";

private static final String BODY = "BODY";

private static final String ATTACH = "ATTACH";

private static final String REPLY = "REPLY";

private static final String FILE = "FILE";

private static final String EDITED = "edt";

private static final String ENCODING = "ENCODING";

private static final String DEFDOMAIN = "localhost";

private static final String DEFENCODING = "ISO-8859-1";

private static final String DEFPORT = "25";

private static String NEWLINE = "\n";

private static Hashtable cfgs;

}

 

上下文章:

 

上一篇文章: 电子邮件新概念-Mail2G使用详解[3] 下一篇文章: V3mail:语音、视频邮件于一身

相关文章:

  • 用端口碰撞技术实现服务器远程管理
  • 以MDaemon为例解释邮件服务器的安全设置
  • 如何作邮件交换记录
  • 用Windows Server 2003架设小型邮件服务器
  • 用CMailServer打造邮件服务器

相关软件:

  • 搜易邮件地址扫描器(EmailScanner) V3.5
  • 北信源VRV 网络服务器端病毒库 90e
  • 勤哲Excel服务器 2005 V6.0 企业版客户端
  • 勤哲Excel服务器 2005 V6.0 企业版服务器端
  • 勤哲Excel服务器 2005 V5.8.3 完整标准版
  • 勤哲Excel服务器 2005 V6.0 标准版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

网络技术分类导航

  • 局域网专栏
  • 病毒快报
  • 网络安全
  • 组网教程
  • WEB服务器架设与维护
  • FTP服务器架设与维护
  • DNS服务器架设与维护
  • 邮件服务器架设与维护

本类经典文章推荐

  • 如何作邮件交换记录
  • 用Windows Server 2003架设小型邮...
  • 用CMailServer打造邮件服务器
  • Server 2003中为SNMP服务配置网络...
  • 你的email服务器准备好应对账号搜...
  • 个人SMTP服务器的配置
  • 教你如何使用Procmail 过滤mail病...
  • Sendmail邮件服务器快速指(二)
  • 教你用QMailadmin达出QMail邮件账...
  • 教你三分钟打造反垃圾邮件服务器

邮件服务器架设与维护阅读排行

  • 企业Sendmail邮件服务器的创建(4)
  • 利用twig架设WebMail系统(2)
  • 配置你的第一台e-mail服务器(1)
  • 创建企业级Internet邮件服务器(2)
  • 使用Exchange构筑小型局域网电子邮...
  • 配置你的第一台e-mail服务器
  • 创建企业级Internet邮件服务器
  • 建立邮件服务器:概述(4)
  • 利用twig架设WebMail系统(1)
  • 在Fedora上建立自己的邮件服务器

网络技术阅读总排行

  • 网络解惑:找回消失的本地连接
  • 教你如何通过路由器来控制上网
  • 网卡故障排除技巧详解
  • FlashFTP教程
  • 网上邻居十大经典应用技巧
  • 如何有效建立Win2000 VPN服务器
  • 经济实惠:组建P2P电影服务器
  • 查找局域网络中的故障技巧
  • 南阳信息港被黑案告破!
  • 小区宽带主要常见故障解决办法

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有