ASP用JMail、CDO发送邮件

前一段时间有发过一个简单的JMAIL邮件发邮件的代码,今天就把这个代码做一个具体的注解,并增加了另外两个格式的代码,并举几个简单的例子:
首先是jmail.smtpmail的核心代码:

<%
  Set jmail = Server.CreateObject("JMAIL.SMTPMail")  '创建一个JMAIL对象
  jmail.silent = true  'JMAIL不会抛出例外错误,返回的值为FALSE跟TRUE
  jmail.logging = true  '启用使用日志
  jmail.Charset = "GB2312"  '邮件文字的代码为简体中文
  jmail.ContentType = "text/html"  '邮件的格式为HTML的
  jmail.ServerAddress = "Server Address"  '发送邮件的服务器
  jmail.AddRecipient Email    '邮件的收件人
  jmail.SenderName = "SenderName"    '邮件发送者的姓名
  jmail.Sender = "Email Address"    '邮件发送者的邮件地址
  jmail.Priority = 1  '邮件的紧急程序,1 为最快,5 为最慢, 3 为默认值
  jmail.Subject = "Mail Subject"  '邮件的标题
  jmail.Body = "Mail Body"  '邮件的内容
  jmail.AddRecipientBCC Email  '密件收件人的地址
  jmail.AddRecipientCC Email  '邮件抄送者的地址
  jmail.Execute()  '执行邮件发送
  jmail.Close    '关闭邮件对象
%>

  w3 Jmail4.3组件重新设计了其内部结构——使用Message对象代替原来的单一对象Jmail.smtpmail发送邮件,有些方法需要身份验证的(如163、yahoo等),可以用下面的方法解决:
<%
    Set jmail = Server.CreateObject("JMAIL.Message")  '建立发送邮件的对象
    jmail.silent = true    '屏蔽例外错误,返回FALSE跟TRUE两值j
    mail.logging = true  '启用邮件日志
    jmail.Charset = "GB2312"    '邮件的文字编码为国标
    jmail.ContentType = "text/html"    '邮件的格式为HTML格式
    jmail.AddRecipient Email    '邮件收件人的地址
    jmail.From = "Email From for Sender"  '发件人的E-MAIL地址
    jmail.MailServerUserName = "UserName of Email"    '登录邮件服务器所需的用户名
    jmail.MailServerPassword = "Password of Email"    '登录邮件服务器所需的密码
    jmail.Subject = "Mail Subject"    '邮件的标题
    jmail.Body = "Mail Body"      '邮件的内容
    jmail.Priority = 1      '邮件的紧急程序,1 为最快,5 为最慢, 3 为默认值
    jmail.Send("Server Address")    '执行邮件发送(通过邮件服务器地址)
    jmail.Close()  '关闭对象
%>

  再讲一下微软自带的CDONTS组件的发信的方法:

<%
    Set cdomail = Server.CreateObject("CDONTS.NewMail")  '建立邮件对象
    cdomail.Subject = "Mail Subject"  '邮件标题
    cdomail.From = "Sender's Mail"  '发件人的地址
    cdomail.To = "Email will from"  '收件人的地址
    cdomail.Body = "Mail Body"  '邮件的内容
    cdomail.Send    '执行发送
%>

  这种方法发送邮件是最简单的,同时也带来一定的问题,就是很少有服务器会开这项服务!


  我们写程序,一般情况下都是说要代码模块化,这样方便维护,同时也方便移植。因此,我在这里将这个发邮件的写成一个子程,在调用的时候可以直接调用(当然,如果你高兴写成函数的话也是可以的,这个主要是看个人兴趣):

<%
  '参数说明
  'Subject    : 邮件标题
  'MailAddress : 发件服务器的地址,如smtp.163.com
  'Email      : 收件人邮件地址
  'Sender      : 发件人姓名
  'Content    : 邮件内容
  'Fromer      : 发件人的邮件地址

  Sub SendAction(subject, mailaddress, email, sender, content, fromer)
      Set jmail = Server.CreateObject("JMAIL.SMTPMail")  '创建一个JMAIL对象
      jmail.silent = true  'JMAIL不会抛出例外错误,返回的值为FALSE跟TRUE
      jmail.logging = true  '启用使用日志
      jmail.Charset = "GB2312"  '邮件文字的代码为简体中文
      jmail.ContentType = "text/html"  '邮件的格式为HTML的
      jmail.ServerAddress = mailaddress  '发送邮件的服务器
      jmail.AddRecipient Email    '邮件的收件人
      jmail.SenderName = sender  '邮件发送者的姓名
      jmail.Sender = fromer    '邮件发送者的邮件地址
      jmail.Priority = 1  '邮件的紧急程序,1 为最快,5 为最慢, 3 为默认值
      jmail.Subject = subject  '邮件的标题
      jmail.Body = content  '邮件的内容
      '由于没有用到密抄跟抄送,这里屏蔽掉这两句,如果您有需要的话,可以在这里恢复
      'jmail.AddRecipientBCC Email  '密件收件人的地址
      'jmail.AddRecipientCC Email  '邮件抄送者的地址
      jmail.Execute()  '执行邮件发送
      jmail.Close    '关闭邮件对象
  End Sub
 
  '调用此Sub的例子
  Dim strSubject,strEmail,strMailAdress,strSender,strContent,strFromer
  strSubject    = "这是一封用JMAIL发送的测试邮件"
  strContent    = "JMail组件发送测试成功!"
  strEmail      = "runbing@eyou.com"
  strFromer      = "runbing@eyou.com"
  strMailAddress = "mail.ubbcn.com"

  Call SendAction (strSubject,strMailaddress,strEmail,strSender,strContent,strFromer)
%>

  以上是我对发邮件代码的一个粗略的见解,忘大家不吝赐教!

以下是JMail的一些文档及属性参考:

W3 Jmail 参考说明

jmail.smtpmail

Body : String
(v3.)
信件体,正文,使用AppendText追加内容
如:JMail.Body = "Hello world"
Charset : String
(v3.)
字符集,缺省为"US-ASCII"
如:JMail.Charset = "US-ASCII"

ContentTransferEncoding : String
(v3.)
指定内容传送时的编码方式,缺省是"Quoted-Printable"
如:JMail.ContentTransferEncoding = "base64"

ContentType : String
(v3.)
信件的contentype. 缺省是"text/plain",但是可以设置为其他你想要的类型.
如果你以HTML格式发送邮件, 改为"text/html"即可。
如:JMail.ContentType = "text/html"
DeferredDelivery : Date
(v3.)
设置延期发送. 如果邮件服务器支持的话,消息到了这个时间才会发送
如:(Javascript)JMail.DeferredDelivery = new Date( 2, 2, 17 ).getVarDate();
Encoding : String
(v3.)
这个属性可以用来改变附件编码方式(缺省是"base64). 可以选择使用的是"base64", "uuencode" or "quoted-printable"
如:JMail.Encoding = "base64"
ErrorCode : Integer
(v3.)
如果JMail.silent设置为true,ErrorCode包含的是错误代码
如:Response.Write( JMail.ErrorCode );
ErrorMessage : String
(v3.)
如果JMail.silent设置为true,包含的是错误信息
如:Response.Write( JMail.ErrorMessage );
ErrorSource : String
(v3.)
Contains the error source if JMail.silent is set to true
如:Response.Write( JMail.ErrorSource );
ISOEncodeHeaders : Boolean
(v3.)
是否将信头编码成iso-8859-1字符集. 缺省是true
如:JMail.ISOEncodeHeaders = false
Lazysend : Boolean
(v3.)

这个属性指定Jmail是否一直等到mail发送了然后返回,或者缓冲这条消息然后在后台发送。
然而设置了这个属性,你就不能控制错误信息。
注意:如果选择了这个选项,属性ServerAddress将无效,lazysend将通过dsn查询决定邮件服务器,
在一些设置里面,这可能有问题。
如:JMail.LazySend = true;
Log : String
(v3.)
Jmail创建的日志,如果loging属性设置为true
如:Response.Write( JMail.Log );
Logging : Boolean
(v3.)
是否使用日志
如:JMail.Logging = true
MailDomain : String
(v3.)
This can be used to override the EHLO/HELO statement to your mailserver
如:JMail.Maildomain = "hello.world.com"
MimeVersion : String
(v3.)
指定mime版本。缺省是"1."
如:JMail.MimeVersion = "1."
Priority : Integer
(v3.)
优先级. 范围在1-5之间
1 高优先级. 有些邮件程序称之为紧急
2 也是高优先级
3 普通优先级
4 低优先级
5 最低的优先级
如:JMail.Priority = 3
Recipients : String
(v3.)
只读属性,返回所有收件人
如:Response.Write( "" + JMail.Recipients + "" );
ReplyTo : String
(v3.)
指定一个可选的回信地址
如:JMail.ReplyTo = "president@dimac.net"
ReturnReceipt : Boolean
(v3.)
指定是否发件人需要一个回复收据. 缺省是false
如:JMail.ReturnReceipt = true
Sender : String
(v3.)
指定发件人的邮件地址
如:JMail.Sender = "batman@dimac.net"
SenderName : String
(v3.)
指定发件人的姓名
如:JMail.SenderName = "Bat man"
ServerAddress : String
(v3.)
指定邮件服务器的地址。可以指定多个服务器,用分号点开。可以指定端口号。
如果serverAddress保持空白,JMail会尝试解决远程邮件服务器,然后直接发送到服务器上去。
如:JMail.ServerAddress = "mail.mydom.net; mail2.mydom.net:25"
Silent : Boolean
(v3.)
如果设置为true,JMail不会抛出例外错误. JMail.execute() 会根据操作结果返回true或false
如:JMail.silent = true
SimpleLayout : Boolean
(v3.)
设置为true,减少Jmail产生的header信头
如:JMail.SimpleLayout = true
Subject : String
(v3.)
设定消息的标题
如:JMail.Subject = "Dimac rocks big time!"
UsePipelining : Boolean
(v3.)
Overrides if JMail should use pipelining on a server that supports it.
如:JMail.Pipelining = false
AddAttachment( FileName, [ContentType] )
(v3.)
添加文件附件到信件
如:JMail.AddAttachment( "c://autoexec.bat" );
AddCustomAttachment( FileName, Data )
(v3.)
添加自定义附件. This can be used to attach "virtual files" like a generated text string or certificate etc.
如:JMail.AddCustomAttachment( "readme.txt", "Contents of file" );
AddHeader( XHeader, Value )
(v3.)
添加用户定义的X-header到message
如:JMail.AddHeader( "Originating-IP","193.15.14.623" );
AddNativeHeader( Header, Value )
(v3.)
添加信头
如:JMail.AddNativeHeader( "MTA-Settings", "route" );
AddRecipient( Email )
(v3.)
增加收件人
如:JMail.AddRecipient( "info@dimac.net" );
AddRecipientBCC( Email )
(v3.)
增加密件收件人
如:JMail.AddRecipientBCC( "someone@somedomain.net" );
AddRecipientCC( Email )
(v3.)
增加抄送收件人
如:JMail.AddRecipientCC( "someone@somedomain.net" );
AddRecipientEx( Email, Name )
(v3.)
增加一个带名字的收件人
如:JMail.AddRecipientEx( "info@dimac.net", "Dimac INFO" );
AddURLAttachment( bstrURL, bstrAttachAs, [bstrAuth] )
(v3.)
下载并添加一个来自url的附件. 第二个参数"AttachAs", 被用来指定信件收到后的文件名. 第3个可选参数是用来可选的WWW-鉴定.
如:JMail.AddURLAttachment( "http://download.dimac.net/jmail/jmail.exe", "jmail.exe" )
AppendBodyFromFile( FileName )
(v3.)
将一个文件内容追加到正文后
如:JMail.AppendBodyFromFile( "c://mytext.txt" );
AppendText( Text )
(v3.)
追加信件的正文内容
如:JMail.AppendText( "Text appended to message Body" );
ClearAttachments()
(v3.)
清除附件列表
如:JMail.ClearAttachments();
ClearCustomHeaders()
(v3.)
清除所有自定义的信头
如:JMail.ClearCustomHeaders();

ClearRecipients()
(v3.)
清除收件人列表
如:JMail.ClearRecipients();
Close()
(v3.)
强制JMail关闭缓冲的与邮件服务器的连接
如:JMail.Close();
Execute() : Boolean
(v3.)
执行邮件的发送
如:JMail.Execute();
ExtractEmailAddressesFromURL( bstrURL, [bstrAuth] )
(v3.)
从一个url
下载和添加email地址
如:JMail.ExtractEmailAddressesFromURL( "http://duplo.org/generateEmailList.asp" );
GetMessageBodyFromURL( bstrURL, [bstrAuth] )
(v3.)
清除message的正文,并用url的内容替换。Contenttype 会自动设置成URl的contentyp。第二参数(login and password)是可选的。
如:JMail.GetMessageBodyFromURL( "http://duplo.org/", "login:password" )

LogCustomMessage( Message )
(v3.)
将用户自定义消息加入JMail日志. 只有属性loging设置为true时,这项功能才能起作用
如:JMail.LogCustomMessage( "Hello world" );


Jmail的属性和方法
属性:
Body : String
(v3.)
E-Mail的主体
JMail.Body = "Hello world"

Charset : String
(v3.)
设定邮件的字符集,默认为"US-ASCII"
JMail.Charset = "US-ASCII"

ContentTransferEncoding : String
(v3.)
指定内容编码, 默认为 "Quoted-Printable"
JMail.ContentTransferEncoding = "base64"

ContentType : String
(v3.)
这个邮件的头设置, 默认为 "text/plain" 能设
置成你需要的任何情况。 你想发送HTML信息,改这个头文件为 "text/html"
JMail.ContentType = "text/html"

DeferredDelivery : Date
(v3.)
设置时间。 如果MAILSERVER服务器支持,可以设置何时发送邮件。
JMail.DeferredDelivery = new Date( 2, 2, 17 ).getVarDate();

Encoding : String
(v3.)
This can be used to change the default Attachment encoding from base64. Valid options are

"base64", "uuencode" or "quoted-printable"
JMail.Encoding = "base64"

ErrorCode : Integer
(v3.)
报错误信息,如果JMail.silent被设置成true
Response.Write( JMail.ErrorCode )

ErrorMessage : String
(v3.)
报错误信息,如果JMail.silent被设置成true
Response.Write( JMail.ErrorMessage )

ErrorSource : String
(v3.)
报错误信息,如果JMail.silent被设置成true
Response.Write( JMail.ErrorSource )

ISOEncodeHeaders : Boolean
(v3.)
头信息代码按照iso-8859-1字符设置。 The default is true.
JMail.ISOEncodeHeaders = false

Lazysend : Boolean
(v3.)
这个属性是将邮件放入缓冲直至发出为止,的不到任何的错误信息
JMail.LazySend = true;

Log : String
(v3.)
当loging被设置后,这个LOG被JMAIL生成
Response.Write( JMail.Log )

Logging : Boolean
(v3.)
能/不能登陆用JMAIL
JMail.Logging = true

MailDomain : String
(v3.)
可以忽略 EHLO/HELO 状态对你的mailserver
JMail.Maildomain = "hello.world.com"

MimeVersion : String
(v3.)
专门的 mime 版本. The default is "1."
JMail.MimeVersion = "1."

Priority : Integer
(v3.)
邮件的优先级,可以范围从1到5。
越大的优先级约高,比如,5最高,1最低
一般设置为3
JMail.Priority = 3

Recipients : String
(v3.)
这个信息的接收者只有只读属性
Response.Write( "" + JMail.Recipients + "" )

ReplyTo : String
(v3.)
指定一个可选的回信地址
JMail.ReplyTo = "president@dimac.net"

ReturnReceipt : Boolean
(v3.)
是否按寄件人的要求回信,默认是"false"
JMail.ReturnReceipt = true

Sender : String
(v3.)
邮寄的地址
JMail.Sender = "batman@dimac.net"

SenderName : String
(v3.)
收信人姓名
JMail.SenderName = "Bat man"

ServerAddress : String
(v3.)
SERVER的地址。可以有很多的SERVER地址,后可跟端口号
JMail.ServerAddress = "mail.mydom.net; mail2.mydom.net:25"

Silent : Boolean
(v3.)
设置成TRUE后JMAIL将检查所有的邮件在 JMail.execute() 执行后
返回真或假根据信件发送的成功与否depending on the success of the operation

JMail.silent = true

SimpleLayout : Boolean
(v3.)
设置成TRUE减少JMAIL产品头数量
JMail.SimpleLayout = true

Subject : String
(v3.)
邮件的标题。
JMail.Subject = "Dimac rocks big time!"


UsePipelining : Boolean
(v3.)
管道的支持。
JMail.Pipelining = false


JMAIL的方法
AddAttachment( FileName, [ContentType] )
(v3.)
加入一个附件
JMail.AddAttachment( "c://autoexec.bat" );

AddHeader( XHeader, Value )
(v3.)
加入一个头信息
JMail.AddHeader( "Originating-IP","193.15.14.623" );

AddNativeHeader( Header, Value )
(v3.)
加入一个头信息
JMail.AddNativeHeader( "MTA-Settings", "route" );

AddRecipient( Email )
(v3.)
加入一个收件者
JMail.AddRecipient( "info@dimac.net" );

AddRecipientBCC( Email )
(v3.)
屏蔽某个接受者。不给其发送邮件
JMail.AddRecipientBCC( "someone@somedomain.net" );

AddRecipientCC( Email )
(v3.)
抄写一份给另一接受者
JMail.AddRecipientCC( "someone@somedomain.net" );

AddRecipientEx( Email, Name )
(v3.)
加入和邮件相对应的名称
JMail.AddRecipientEx( "info@dimac.net", "Dimac INFO" );

AppendBodyFromFile( FileName )
(v3.)
将文件的内容发送出去
JMail.AppendBodyFromFile( "c://mytext.txt" );

AppendText( Text )
(v3.)
添加附件
JMail.AppendText( "Text appended to message Body" );

ClearAttachments()
(v3.)
清除附件列表
JMail.ClearAttachments();

ClearCustomHeaders()
(v3.)
清空所有的用户头信息
JMail.ClearCustomHeaders();

ClearRecipients()
(v3.)
清空收件箱
JMail.ClearRecipients();


Close()
(v3.)
强行制止邮件的发送
JMail.Close();

Execute() : Boolean
(v3.)
执行邮件发送到SERVER
JMail.Execute();

ExtractEmailAddressesFromURL( bstrURL, [bstrAuth] )
(v3.)
从URL或
下载 加入邮件地址
JMail.ExtractEmailAddressesFromURL( "http://duplo.org/generateEmailList.asp" );

LogCustomMessage( Message )
(v3.)
登陆用户信息到JMAIL的LOG,这个功能只有将LOGING设置为TRUE时可以用
JMail.LogCustomMessage( "Hello world" );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值