[ASP]调用Jmail组件发送邮件过程(绝对能发到126等外部邮箱)

来源:互联网 发布:网络舆情监测专业工资 编辑:程序博客网 时间:2024/05/01 12:31

前一段时间有发过一个简单的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
原创粉丝点击