JMAIL邮件发邮件的代码

前一段时间有发过一个简单的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 '关闭邮件对象


代码当中已做了一定程度的注解,如果还有不明白的地方,请看最下面的例子。


接下来是jmail.message的核心代码:

Set jmail = Server.CreateObject("JMAIL.Message") '建立发送邮件的对象
jmail.silent = true '屏蔽例外错误,返回FALSE跟TRUE两值
jmail.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.Prority = 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 '执行发送

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


以上三种列出的是两个组件的三种发送方法,其中 第二种是有身份验证的,也就是说有要求验证的邮箱如果不用这种方法发送的话,是无法收到信件的。如接收邮箱为 163、yahoo等,没有用第二种方法发的话,是收不到邮件的。

接下来是一个简单的例子,由于页面的关系,我在此只做一个例子,另外两种可以用同样的方法来处理的。

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


这里引用第一种!

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


以上我已经将代码做成一个块,下面是对该块的具体引用法!

如我收到的值分别如下:

邮件标题(subject):JMAIL发信
邮件内容(content):这是一封测试邮件
发信人的地址(fromer):runbing@eyou.com
发信者的姓名(sender):帅青蛙
收信人的地址(email):runbing@eyou.com
邮件服务器的地址(mailaddress):mail.ubbcn.com

则我调用发信块的时候(SendAction subject,mailaddress,email,sender,content,fromer)最终变成这样(蓝色部分):

Set jmail = Server.CreateObject("JMAIL.SMTPMail")
jmail.silent = true
jmail.logging = true
jmail.Charset = "GB2312"
jmail.ContentType = "text/html"
jmail.ServerAddress = "mail.ubbcn.com"
jmail.AddRecipient "runbing@eyou.com"
jmail.SenderName = "帅青蛙"
jmail.Sender = "runbing@eyou.com"
jmail.Priority = 1
jmail.Subject = "JMAIL发信"
jmail.Body = "这是一封测试邮件"
jmail.Execute()
jmail.Close


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

代码中指定了SMTP的服务器地址,如果要求验证的话,一样是可以使用的(本人所使用的邮件服务器都是要求身份验证的,而且成功通过测试),但对于要求验证的服务器(如163等)收信的话,只有第二种的方法才可以正确收信。
跟踪发信状态的话,对于被拒收是没法跟踪的(有些服务器邮件被拒收,信会被退回来,有没收到就看发件人的信箱了),也就是说只有发信成功或失败可以跟踪,代码当中加入一句jmail.silent的目的就是跟踪这个,它将返回两个值,成功的话返回true,失败就是false。知道这些的话就好办,用一个值来收集返回值,之后加以判断就可以。

例:


...... '略去发信代码
'将jmail.execute()这句代码改成
isgo(接收返回值,可任意名)=jmail.execute()
'之后对返回值进行判断
if isgo = true then
response.write "信件发送成功"
else
response.write "信件发送失败"
end if


下面是一个发信的例子,以HTML格式发不出信的关键问题是EMAIL地址要找对,另外一些大网站比如163.com在发信的时候需要设置发信信箱和密码的,不认证的话,有时候收不到信的
另外发信服务器最好是用企业邮局的,我用了几个月,基本上都可以发信的
sendname = Request.Form ("name")
email= Request.Form ("email")
bh=Request.Form ("bh")
SystemEmail= Request.Form ("fmail")
pic = Request.Form ("pic")
mailbody="<html>"
     mailbody=mailbody & "<title>&想您推荐一个产品</title>"
     mailbody=mailbody & "<body>"
     mailbody=mailbody & "<TABLE border=0 width='95%' align=center><TBODY><TR>"
     mailbody=mailbody & "<TD valign=middle align=top>"
     mailbody=mailbody &"您好:<br><br>"
     mailbody=mailbody & "您的朋友("&sendname&")发送了一张图片给你<br>"
     mailbody=mailbody & "下面是相关信息:<br>"
     mailbody=mailbody & "公司名称:"&bh&"<br>"
     mailbody=mailbody & "产品图:<img src=http://www.szwin.net/chanpin/"&pic&" > <br>"
     mailbody=mailbody & "<br><br>"
     mailbody=mailbody & "<center><font color=red>希望您能选择这个产品!</font>"
     mailbody=mailbody & "</TD></TR></TBODY></TABLE><br><hr width=95% size=1>"
     mailbody=mailbody & "</body>"
     mailbody=mailbody & "</html>"
Set jmail = Server.CreateObject("JMail.Message")
     jmail.silent = true
     jmail.Logging = true
     jmail.Charset = "gb2312"
     JMail.ContentType = "text/html"
     jmail.MailServerUserName ="123@szwin.net" '输入smtp服务器验证登陆名 (邮局中任何一个用户的Email地址)
     jmail.MailServerPassword = "******" '输入smtp服务器验证密码 (用户Email帐号对应的密码)
     jmail.From = SystemEmail '发件人Email
     jmail.FromName = sendname '发件人姓名
     jmail.AddRecipient (email) '收件人Email
     jmail.Subject = "想您推荐产品" '信件主题
     jmail.Body = mailbody '正文
     jmail.Send ("mail.szwin.net") 'smtp服务器地址(企业邮局地址)
     set jmail = nothing
     SendMailed = "OK"

如果大家想用文本的格式,可以用这个参考
每一行都会自动换行的
content = content & "用户帐号:" & uid & vbcrlf
content = content & "用户密码:" & pwd & vbcrlf
content = content & "用户邮件:" & email & vbcrlf
content = content & "用户QQ:" & oicq & vbcrlf
content = content & "用户地址:"& address & vbcrlf
content = content & "用户电话:" & tel & vbcrlf
content = content & "用户传真:" & fax & vbcrlf
content = content & "注册时间:" & cstr(now()) & vbcrlf
content = content &"信息服务由 "&homename&"提供("&homepage&")"& vbcrlf

 

 

 

下面是反馈表单的
<%
name = Request.Form ("gongsi")
name = Request.Form ("address")
name = Request.Form ("name")
email= Request.Form ("email")
phone= Request.Form ("phone")
mailsubject= Request.Form ("mailsubject")
text1= Request.Form ("text1")
%>
<%
mess = mess & "---------------客户反馈意见开始-------------------" & vbcrlf
mess = mess & "发件人公司名称:" & gongsi & vbcrlf
mess = mess & "发件人公司地址:" & address & vbcrlf
mess = mess & "发件人姓名:" & name & vbcrlf
mess = mess & "发件人邮件:" & email & vbcrlf
mess = mess & "发件人电话:" & phone & vbcrlf
mess = mess & "发件人内容:" & text1 & vbcrlf
mess = mess & "---------------客户反馈意见结束-------------------"
SystemEmail=Request.Form ("email")
sendname=Request.Form ("name")
Set jmail = Server.CreateObject("JMail.Message")
JMail.Priority = 1
JMail.Silent=true
JMail.Charset = "gb2312"
     jmail.MailServerUserName ="123@szwin.net" '输入smtp服务器验证登陆名 (邮局中任何一个用户的Email地址)
     jmail.MailServerPassword = "*******" '输入smtp服务器验证密码 (用户Email帐号对应的密码)
     jmail.From = SystemEmail '发件人Email
     jmail.FromName = sendname '发件人姓名
     jmail.AddRecipient "itpc@itpc.cn" '收件人Email
     jmail.Subject = mailsubject '信件主题
     jmail.Body = mess '正文
     jmail.Send ("mail.szwin.net") 'smtp服务器地址(企业邮局地址)
     set jmail = nothing
     SendMailed = "OK"

%>
<Script language="javascript">
     alert("邮件发送成功");
     history.back();
</Script>


总结一下
1、注意取得EMAIL的方法,这个很重要,另外注意
JMail.SMTPMail和JMAIL.Message一个是不需要用户名称
密码认证一个是需要!
2、最好设置认证用户名称和密码的,这样可以保证发信的效率
我以前用不认证的163.com sohu.com的免费信箱很难收到信的!
3、注意各项参数正确,比如发信人姓名,发信人EMAIL,主题
如果有的参数取不到正确的值,也会收不到信的
另外综合一个动网的BBS里面的发信代码,让大家加深一点印象
<%
     sub Jmail(email,topic,mailbody)
     on error resume next
     dim JMail
     Set JMail=Server.CreateObject("JMail.SMTPMail")
     JMail.Logging=True
     JMail.Charset="gb2312"
     JMail.ContentType = "text/html"
     JMail.ServerAddress=Forum_info(4)
     JMail.Sender=Forum_info(5)
     JMail.Subject=topic
     JMail.Body=mailbody
     JMail.AddRecipient email
     JMail.Priority=1
     'JMail.MailServerUserName = "shatan@dvbbs.net" '您的邮件服务器登录名
     'JMail.MailServerPassword = "nihaoma" '登录密码
     JMail.Execute
     Set JMail=nothing
     if err then
     SendMail=err.description
     err.clear
     else
     SendMail="OK"
     end if
     end sub

     sub Cdonts(email,topic,mailbody)
     on error resume next
     dim objCDOMail
     Set objCDOMail = Server.CreateObject("CDONTS.NewMail")
     objCDOMail.From =Forum_info(5)
     objCDOMail.To =email
     objCDOMail.Subject =topic
     objCDOMail.BodyFormat = 0
     objCDOMail.MailFormat = 0
     objCDOMail.Body =mailbody
     objCDOMail.Send
     Set objCDOMail = Nothing
     if err then
     SendMail=err.description
     err.clear
     else
     SendMail="OK"
     end if
     end sub

     sub aspemail(email,topic,mailbody)
     on error resume next
     dim mailer,recipient,sender,subject,message
     dim mailserver,result
     Set mailer=Server.CreateObject("ASPMAIL.ASPMailCtrl.1")
     recipient=email
     sender=Forum_info(5)
     subject=topic
     message=mailbody
     mailserver=Forum_info(4)
     result=mailer.SendMail(mailserver, recipient, sender, subject, message)
     if err then
     SendMail=err.description
     err.clear
     else
     SendMail="OK"
     end if
     end sub

     sub Emailbody(body)
     Emailbody=Emailbody &"<style>A:visited {      TEXT-DECORATION: none      }"
     Emailbody=Emailbody &"A:active {      TEXT-DECORATION: none      }"
     Emailbody=Emailbody &"A:hover {      TEXT-DECORATION: underline overline      }"
     Emailbody=Emailbody &"A:link      {      text-decoration: none;}"
     Emailbody=Emailbody &"A:visited {      text-decoration: none;}"
     Emailbody=Emailbody &"A:active {      TEXT-DECORATION: none;}"
     Emailbody=Emailbody &"A:hover {      TEXT-DECORATION: underline overline}"
     Emailbody=Emailbody &"BODY {      FONT-FAMILY: 宋体; FONT-SIZE: 9pt;}"
     Emailbody=Emailbody &"TD      {      FONT-FAMILY: 宋体; FONT-SIZE: 9pt      }</style>"
     Emailbody=Emailbody &"<TABLE border=0 width='95%' align=center><TBODY><TR>"
     Emailbody=Emailbody &"<TD valign=middle align=top>"
     Emailbody=Emailbody & body
     Emailbody=Emailbody &"</TD></TR></TBODY></TABLE><br><hr width=95% size=1>"
     Emailbody=Emailbody & Copyright & " &nbsp;&nbsp; " & Version
     Emailbody=mailbody
     end sub
%>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值