在一次浏览微软新闻组的时候,看到有人在表扬Jmail。于是我就去下载了一个尝试,发现这个组件做得确实十分好。于是就拿来实现了BBS程序的贴子转发功能。在这里将介绍这个组件的使用方法。
W3 Jmail组件介绍W3 Jmail是一个smtp组件,利用它可以发送邮件,支持html格式邮件。你可以访问主页:
http://tech.dimac.net 下载这个组件。w3 Jmail 发送邮件速度快,功能丰富,并且是免费的。
JMail 使用环境Webserver (IIS4/PWS4)
Microsoft Windows NT / Windows 98 / Microsoft Windows 95 + Winsock 2.0
(Winsock 2.0可以去微软站点下载:
http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe)
3.60版本的JMail的特性Attachments 附件
Return Receipt发信回执
Detailed logging capabilities 详细日志能力
Priority settings 优先级设定
MIME with BASE64, UUEncode and Quoted-Printable Encoding 邮件编码设置
Queued mailings without separate NT service. 邮件队列发送,无需单独的NT服务
Unlimited redundant servers 没有限制的多余server(SMTP服务器)
Blind Carbon Copy (BCC) 密送
Carbon Copy (CC) 抄送
Urgent flagging 紧急标志
US ASCII 和 ISO-8859-1 编码
UUEncoding UUEncode 编码
X-Headers and custom headers 自定义邮件头
MS Mail and Exchange priority headers. 微软Mail和Exchange优先权头
Internal MX lookup with MX priority and redundancy , 带MX优先权和冗余的Internet MX查找
JMail支持的日志功能是非常有用的。特别是当你在发送邮件的时候遇到困难的时候,就可以察看日志内容分析原因。
JMail 已经检查了下列2000年问题测试
2000-01-01 Bug - OK
2000-02-29 Bug - OK
2000-04-01 Bug - OK (Found in MS VCRT)
JMAIL使用16位精度表示年,所以日期范围限制在 -32767~ 32768
Jmail 组件参考说明组件使用方法:
set oVar=Server.CreateOject(“jmail.smtpmail”)
下表列出了Jmail的属性
编号
| 属性名
| 类型
| 版本
| 用途
| 使用举例
|
1
| Body
| String
| v3.0
| 信件体,正文,使用AppendText追加内容
| JMail.Body = "Hello world"
|
2
| Charset
| String
| v3.0
| 字符集,缺省为"US-ASCII" 简体中文是gb2312
| Jmail.Charset = "US-ASCII"
|
3
| ContentTransferEncoding
| String
| v3.0
| 指定内容传送时的编码方式,缺省是"Quoted-Printable"(例如ChinaASP=C2=DB=CC=B3 代表ChinaASP论坛,等于号后面的是gb码的16进制代码)
| Jmail.ContentTransferEncoding = "base64"
|
4
| ContentType
| String
| v3.0
| 信件的contentype. 缺省是"text/plain",但是可以设置为其他你想要的类型。如果你以HTML格式发送邮件, 改为"text/html"即可。
| JMail.C
|
5
| DeferredDelivery
| Date
| v3.0
| 设置延期发送. 如果邮件服务器支持的话,消息到了这个时间才会发送
| (Javascript)Jmail.DeferredDelivery = new Date( 2000, 02, 17 ).getVarDate();
|
6
| Encoding
| String
| v3.0
| 这个属性可以用来改变附件编码方式(缺省是"base64). 可以选择使用的是"base64", "uuencode" or "quoted-printable"
| JMail.Encoding = "base64"
|
7
| ErrorCode
| Integer
| v3.0
| 如果JMail.silent设置为true,ErrorCode包含的是错误代码
| Response.Write( JMail.ErrorCode );
|
8
| ErrorMessage
| String
| v3.0
| 如果JMail.silent设置为true,包含的是错误信息
| Response.Write( JMail.ErrorMessage );
|
9
| ErrorSource
| String
| v3.0
| 如果JMail.silent设置为true,包含的是错误的来源
| Response.Write( JMail.ErrorSource );
|
10
| ISOEncodeHeaders
| String
| v3.0
| 是否将信头编码成iso-8859-1字符集. 缺省是true
| JMail.ISOEncodeHeaders = false
|
11
| Lazysend
| Boolean
| v3.0
| 这个属性指定Jmail是否一直等到mail发送了然后返回,或者缓冲这条消息然后在后台发送。然而设置了这个属性,你就不能控制错误信息。 注意:如果选择了这个选项,属性ServerAddress将无效,lazysend将通过dsn查询决定邮件服务器, 在一些设置里面,这可能有问题。
| JMail.LazySend = true;
|
12
| Log
| String
| v3.0
| Jmail创建的日志,如果loging属性设置为true
| Response.Write( JMail.Log );
|
13
| Logging
| String
| v3.0
| 是否使用日志
| JMail.Logging = true
|
14
| MailDomain
| String
| v3.0
| 改写发送到邮件服务器的EHLO/HELO命令
| JMail.Maildomain = "hello.world.com"
|
15
| MimeVersion
| String
| v3.0
| 指定mime版本。缺省是"1.0"
| JMail.MimeVersion = "1.0"
|
16
| Priority
| Integer
| v3.0
| 优先级. 范围在1-5之间 1 高优先级. 有些邮件程序称之为紧急 2 也是高优先级 3 普通优先级 4 低优先级 5 最低的优先级
| Jmail.Priority = 3
|
17
| Recipients
| String
| v3.0
| 只读属性,返回所有收件人
| Response.Write( "" + JMail.Recipients + "" );
|
18
| ReplyTo
| String
| v3.0
| 指定一个可选的回信地址
| Jmail.ReplyTo = "president@dimac.net"
|
19
| ReturnReceipt
| Boolean
| v3.0
| 指定是否发件人需要一个回复收据. 缺省是false
| Jmail.ReturnReceipt = true
|
20
| Sender
| String
| v3.0
| 指定发件人的邮件地址
| Jmail.Sender = "batman@dimac.net"
|
21
| SenderName
| String
| v3.0
| 指定发件人的姓名
| Jmail.SenderName = "Bat man"
|
22
| ServerAddress
| String
| v3.0
| 指定邮件服务器的地址。可以指定多个服务器,用分号点开。可以指定端口号。 如果serverAddress保持空白,Jmail会尝试解决远程邮件服务器,然后直接发送到服务器上去。
| Jmail.ServerAddress = "mail.mydom.net; mail2.mydom.net:2500"
|
23
| Silent
| Boolean
| v3.0
| 如果设置为true,JMail不会抛出例外错误. JMail.execute() 会根据操作结果返回true或false
| Jmail.silent = true
|
24
| SimpleLayout
| Boolean
| v3.0
| 设置为true,减少Jmail产生的header信头
| Jmail.SimpleLayout = true
|
25
| Subject
| String
| v3.0
| 设定消息的标题
| Jmail.Subject = "Dimac rocks big time!"
|
26
| UsePipelining
| Boolean
| v3.0
| Overrides if Jmail should use pipelining on a server that supports it.
| Jmail.Pipelining = false
|
表9.3.1.1-1 Jmail属性列表
下表列出了Jmail的方法
编号
| 方法
| 版本
| 用途
| 使用举例
|
1
| AddAttachment( FileName, [ContentType] )
| v30
| 添加文件附件到信件
| JMail.AddAttachment( "c:\\autoexec.bat" );
|
2
| AddCustomAttachment( FileName, Data )
| v3.0
| 添加自定义附件. This can be used to attach "virtual files" like a generated text string or certificate etc.
| JMail.AddCustomAttachment( "readme.txt", "Contents of file" );
|
3
| AddHeader( XHeader, Value )
| v3.0
| 添加用户定义的X-header到message
| JMail.AddHeader( "Originating-IP","193.15.14.623" );
|
4
| AddNativeHeader( Header, Value )
| v3.0
| 添加信头
| JMail.AddNativeHeader( "MTA-Settings", "route" );
|
5
| AddRecipient( Email )
| v3.0
| 增加收件人
| JMail.AddRecipient( "info@dimac.net" );
|
6
| AddRecipientBCC( Email )
| v3.0
| 增加密送收件人
| JMail.AddRecipientBCC( "someone@somedomain.net" );
|
7
| AddRecipientCC( Email )
| v3.0
| 增加抄送收件人
| JMail.AddRecipientCC( "someone@somedomain.net" );
|
8
| AddRecipientEx( Email, Name )
| v3.0
| 增加一个带名字的收件人
| JMail.AddRecipientEx( "info@dimac.net", "Dimac INFO" );
|
9
| AddURLAttachment( bstrURL, bstrAttachAs, [bstrAuth] )
| v3.0
| 下载并添加一个来自url的附件. 第二个参数"AttachAs", 被用来指定信件收到后的文件名. 第3个可选参数是用来可选的WWW-鉴定.
| JMail.AddURLAttachment( "http://download.dimac.net/jmail/jmail.exe", "jmail.exe" )
|
10
| AppendBodyFromFile( FileName )
| v3.0
| 将一个文件内容追加到正文后
| JMail.AppendBodyFromFile( "c:\\mytext.txt" );
|
11
| AppendText( Text )
| v3.0
| 追加信件的正文内容
| JMail.AppendText( "Text appended to message Body" );
|
12
| ClearAttachments()
| v3.0
| 清除附件列表
| JMail.ClearAttachments();
|
13
| ClearCustomHeaders()
| v3.0
| 清除所有自定义的信头
| JMail.ClearCustomHeaders();
|
14
| ClearRecipients()
| v3.0
| 清除收件人列表
| JMail.Close();
|
15
| Execute() :Boolean
| v3.0
| 执行邮件的发送
| JMail.Execute();
|
16
| ExtractEmailAddressesFromURL( bstrURL, [bstrAuth] )
| v3.0
| 从一个url下载和添加email地址
| JMail.ExtractEmailAddressesFromURL( "http://duplo.org/generateEmailList.asp" );
|
17
| GetMessageBodyFromURL( bstrURL, [bstrAuth] )
| v3.0
| 清除message的正文,并用url的内容替换。Contenttype 会自动设置成URl的contentyp。第二参数(login and password)是可选的。
| JMail.GetMessageBodyFromURL( "http://duplo.org/", "login:password" )
|
18
| LogCustomMessage( Message )
| v3.0
| 将用户自定义消息加入Jmail日志. 只有属性loging设置为true时,这项功能才能起作用
| JMail.LogCustomMessage( "Hello world" );
|
表9.3.1.1-2 Jmail方法列表
程序举例:
<html>
<head>
<title>your Title </title>
<body>
<%
Set JMail = Server.CreateObject("JMail.SMTPMail")
' 设置serverAddress为我本地的smtp server 地址
JMail.ServerAddress = "mail.yourdomain.com:25"
' 发件人地址
JMail.Sender = "myemail@mydomain.com"
JMail.Subject = "邮件标题"
' 收件人信箱,请注意这里没有使用等号
JMail.AddRecipient "mum@any.com"
JMail.AddRecipient "dad@some.com"
' 属性body可以写也可以读
' 如果你希望给body追加文本,你可以使用
' JMail.Body = JMail.Body & "Hello world!"
' 或者你可以使用JMail.AppendText "Hello World!"
'JMail.Body = "Here you go. Your request has been approved" &_
‘"and the program is attached to this message"
‘ 信件的紧急程度
' 1 - highest priority (Urgent) 急件
' 3 – normal 普通
' 5 – lowest 最低程度
JMail.Priority = 1
‘ 发件人IP地址
JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
' 请注意:IUSR_??? 要有访问的权限
JMail.AppendBodyFromFile "e:\mail\standard_footer.txt"
JMail.AddAttachment "e:\products\MyProduct.exe"
' 发送邮件
JMail.Execute
%>
<center>
邮件发送到你的邮箱 (<%=request.form("email")%>).
</center>
</body>
</html>
但是上面的例子存在这样的问题:由于邮件使用英文编码(缺省的),所以用outlook/outlook express收,看到的缺省页面中文是乱码,必须手工设置为简体中文(GB2312),才能正常阅读。其实我们只要在上面的程序Jmail.execute之前加上 Jmail.CharSet=”gb2312”,那么邮件的编码就是中文了。
还有一个问题是如何发送html格式的邮件。下面是发送html格式邮件的例子
Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.Charset = "gb2312"
JMail.C
JMail.ServerAddress =”mail.yourhost.com:25”
JMail.Sender = “
yourname@yourhost.com”
JMail.Subject = “html格式的邮件”
JMail.AddRecipient “
myname@myhost.com”
JMail.Body = “<html><body><p>你好,谢谢你访问我们的网站” & _
“<a href=’
http://www.yourHost.com’ target=_blank>yourHost</a>”& _
”</p></body></html>”
JMail.Priority = 1
JMail.AddHeader "Originating-IP", _
Request.ServerVariables("REMOTE_ADDR")
JMail.Execute
set jMail=nothing