日期:2012-04-17  浏览次数:21016 次

一. 程序思路

  所有的程序,主要实现两个功能,一、发送邮件;二、上传附件。使用无组件上传程序来上传附件到服务器,在发送完后,将删除服务器上的邮件。实现这两个功能,需要一个数据库来存放邮件内容及附件信息(文件名)。邮件的发送有两种情况:一是,无附件的邮件;二是,有附件的邮件。

  1.发送无附件的邮件。用户根据实际情况来填写收信人、发信人、抄送、密送、SMTP服务器地址、邮件主题、邮件内容等信息,这些信息中,收信人、发信人、邮件主题、邮件内容是必须填写的,否则将收不到邮件。如果SMTP服务器支持SMTP验证,那么你就把你在该邮局的用户名和密码填上。如,你填的发信人地址是xxxx@163.com,因为163的SMTP服务,支持SMTP验证,所以你就要需要你在163的用户名xxxx,密码****,这样才能顺利发送邮件;如,你发信人地址是xxxx@hotmail.com,因为hotmail是不需要SMTP验证的,所以你不用填写用户名和密码。只要记住一点,你的发信的SMTP服务器支持SMTP验证的话,你就要填写相应的用户名和密码。你在填写完表单后,点“发送”按钮就直接发送邮件了。这个过程是在mail.asp和inc_clsEmail.asp完成的。

  2.发送带附件的邮件。这个过程,主要分三步,一、填写表单信息(同上),不过在点“发送”按钮前,需要转到第二步,发送附件。二、此步聚主要是上传附件到服务器。需要服务器支持FSO、Dictionary、Stream等组件。在进入上传附件界面前,先在数据库中创建一条记录,把刚成填的表单信息存在表里,然后选择本地需要本地的rar或zip文件,选好后点“上传”按钮就行了,传完后程序将更新数据库中存入附件文件名和字段的内容并自动跳转到发信页面,发信页面从数据库中读取邮件信息并显示出来,此时点“发送”,就将发送附件了。本过程主要由mail.asp、inc_clsEmail.asp、inc_clsUpload.asp、Upload.asp和Uploadok.asp来完成。

  在这个发信程序中用到的文件清单:
    attachment.mdb  '邮件信息临时存放库
    install.asp    '在数据库中创建邮件信息临时表
    Mail.asp     '发送邮件
    Upload.asp    '文件上传
    Uploadok.asp   '文件上传成功
    inc_clsEmail.asp '邮件发送类
    inc_clsUpload.asp '无组件上传类
    inc_set.asp    '一些表格颜色的设置

二.建立数据库
  1.打开你的Access建立一个文件名为:attachment.mdb.添加以下字段:
    (1). ID     类型为自动编号(存放邮件信息的ID编号)
    (2). smtpcheck 类型为是/否字段(存放是否需要SMTP验证)
    (3). from    类型为文本字段(存放发信人的Email地址)
    (4). fromname  类型为文本字段(存放发信人的名字)
    (5). to     类型为文本字段(存放收信人的Email地址)
    (6). bcc    类型为文本字段(存放密送人的Email地址)
    (7). cc     类型为文本字段(存放抄送人的Email地址)
    (8). server   类型为文本字段(存放SMTP服务器地址)
    (9). subject  类型为文本字段(存放邮件主题)
    (10). body   类型为备注字段(存放邮件的内容)
    (11). username 类型为文本字段(存放邮箱登录用户名)
    (12). password 类型为文本字段(存放邮箱登录的密码)
    (13). filenames 类型为文本字段(存放附件的文件名)
  注意:可以把字段设置为允许为空。

  当然你可以自己添加你认为需要的字段,如果你把字段名或表名换成其它名称,则对程序也要作出相应的更改,不然会出错。如果你不想手工建表及添加字段,那你可以在浏览器中运行Install.asp文件,它可以自动建表,你就可以偷懒了:)

  2. 在开始编写之前你可以罗列一下要用到的SQL语句.

'搜索出数据库中ID号为1的邮件信息
SQL = "SELECT * FROM attachment ORDER BY WHERE id=1"
'这个语句是添加新的临时邮件信息时用到的.
SQL="INSERT INTO attachment(smtpcheck,from,fromname,to,bcc,cc,server,subject,body,username,
password,filenames) VALUES(true,'cjj8110@hotmail.com',cjj','cjj8110@hotmail.com','','','','测试','测试邮件件发送程序','cjj8110','********','1,zip,1.rar')"
'删除表中全部数据。
SQL = "DELETE FROM attachment"
'删除表中指定ID的记录
SQL = "DELETE FROM attachment WHERE id =" & id
'更新表中,指定ID的filenames字段的内容
SQL = "UPDATE attachemnt SET filenames='" & filenames & "' WHERE ID=" & id


三.编写代码
  Install.asp:考虑到手工建表有点麻烦,所以写了这个文件。文件主要用到CREATE TABLE和DROP TABLE语句,不过由于数据库的原因,有些数据库有可能不支持此语句。本文以Access为例,因为ACCESS支持这两条语句,如果还是新手还看不懂那也没关系,以为有机会再研究好了:)。由于不清楚数据库定义了那些关键字,所以在创建表和字段时,都用[]把表名和字段名括起来,即使表名或字段名和数据库的关键字冲突,也不会引起程序出错。不过运行本程序前,必须先在Access中创建一个数据库名称为attachment.mdb,可以不为其创建表,用此程序来创建。

install.asp的源码: