利用JMail组件发送邮件

雪域幽狐 2003-08-24 00:00 阅读:29668


目的:
    利用JMail组件发送邮件

起因:
    为了通知用户,我们一般采用发E-mail的方式,轻松快捷,利用JMail发送邮件,不需要人为控制。

解决方案:
    在使用前,应确认服务器是否支持JMail组件发送邮件,可用阿江探针测试,下载地址http://www.ajiang.net/article/artview.asp?id=346
    下面是用JMail组件发送邮件的简单代码,各位可参考使用:
分两个文件,Sendmail.asp为填写页面,Sendmailed.asp为发送文件。
**********Sendmail.asp*************

<HTML>
<HEAD>
<TITLE>用JMail组件发送邮件</TITLE>
</HEAD>
<BODY>
    <center>
        <h1>用JMail组件发送邮件</h1>    </center>
<hr>
<form method="post" action="sendmailed.asp">
请如实填写以下内容:



姓名:

<input type="text" size="25" name="name">

电子邮件地址:

<input type="text" size="25" name="email">

To电子邮件地址:

<input type="text" size="25" name="toemail">

主题:

<input type="text" size="25" name="subject">


详细内容:

<textarea name="body" cols="40" rows="15" wrap="PHYSICAL"></textarea>


HTML内容:

<textarea name="htmlbody" cols="40" rows="15" wrap="PHYSICAL"></textarea>


<input type="submit" value="寄出">
</form>
</BODY>
</HTML>


**************Sendmailed.asp*****************
<HTML>
<BODY>
<%
Dim name,msg,SendMail
name=Request.Form("name")
Set msg = Server.CreateObject("JMail.Message")
msg.silent = true
msg.Logging = true
msg.Charset = "gb2312"
msg.MailServerUserName = "abc@abc.com"  '输入smtp服务器验证登陆名 (邮局中任何一个用户的Email地址)
msg.MailServerPassword = "******"  '输入smtp服务器验证密码  (用户Email帐号对应的密码)
msg.From = Request.Form("email")  '发件人Email
if name<>"" then
    msg.FromName = name  '发件人姓名
end if
msg.AddRecipient  Request.Form("toemail")  '收件人Email
msg.Subject = Request.Form("subject")  '信件主题
msg.Body = Request.Form("body")  '正文
msg.HTMLBody = Request.Form("htmlbody")  'HTML正文
msg.ReturnReceipt=true
msg.Send ("mail.nowfox.com")  'smtp服务器地址(企业邮局地址)
set msg = nothing
if err then
    SendMail=err.de<I><I>script</I></I>ion
    err.clear
else
    SendMail="OK"
end if

if SendMail="OK" then%>
    <p>邮件发送成功,谢谢使用</p>
<%else%>
    由于系统错误,邮件未能成功发送
<%end if%>
</BODY>
</HTML>


各位可根据以上代码改写成注册用户时通知用户的发送邮件代码。

21条评论

lin555er 2004-08-03 09:01
msg.MailServerUserName = "abc@abc.com" '输入smtp服务器验证登陆名 (邮局中任何一个用户的Email地址)/这个参数怎么写呀?可以说详细一点吗?
msg.MailServerPassword = "******"  / '输入smtp服务器验证密码   (用户Email帐号对应的密码)这个也一样呀,不只怎么写
msg.Send ("mail.abc.com") / 'smtp服务器地址(企业邮局地址)还有就是这个参数。。痛苦呀。。。作者可以及时帮助我吗?
我的QQ:52641887,感激不仅(随时在线等你)

雪域幽狐 2004-08-03 12:55
我在文中已写清楚了,msg.MailServerUserName为smtp服务器验证登陆名,比如我的就是“club@nowfox.com”,密码填入这个对应的密码,msg.Send为“mail.nowfox.com”

如果不是使用虚拟主机的邮局,以163.com的邮局为例,msg.MailServerUserName就是“dddox@163.com”,密码填入对应的密码,msg.Send为“smtp.163.com”

Anlex 2004-08-10 14:43
请问雪域幽狐:下面这asp有错吗?如果没错,为什么发送出去后我的邮箱收不到邮件呢?请教!
<%Dim name,mail,SendMail
name=Request.Form("name")
Set mail = Server.Createobject("JMail.Message")
mail.silent = true
mail.Logging = true
mail.Charset = "gb2312"
mail.MailServerUserName = "anlex"
mail.MailServerPassword = "*****"  
mail.From = Request.Form("email")      
if name<>"" then
    mail.FromName = name  
end if
mail.addrecipient("toemail")
mail.Subject = Request.Form("subject")  
mail.Body = Request.Form("body")            
mail.ReturnReceipt=true
mail.Send ("smtp.sohu.com")            
set mail = nothing
if err then
    SendMail=err.description
    err.clear
else
    SendMail="OK"
end if
if SendMail="OK" then
response.write"邮件发送成功,谢谢使用"
else
response.write"由于系统错误,邮件未能成功发送"
end if
%>

Anlex 2004-08-10 14:45
<%Dim name,mail,SendMail
name=Request.Form("name")
Set mail = Server.Createobject("JMail.Message")
mail.silent = true
mail.Logging = true
mail.Charset = "gb2312"
mail.MailServerUserName = "anlex" ''输入smtp服务器验证登陆名 (邮局中任何一个用户的Email地址)
mail.MailServerPassword = "*******"   ''输入smtp服务器验证密码   (用户Email帐号对应的密码)
mail.From = Request.Form("email")        ''发件人Email
if name<>"" then
    mail.FromName = name    ' '发件人姓名
end if
mail.addrecipient("toemail")''收件人Email
mail.Subject = Request.Form("subject")   ''信件主题
mail.Body = Request.Form("body")         ''正文
    
mail.ReturnReceipt=true
mail.Send ("smtp.sohu.com")             ' 'smtp服务器地址(企业邮局地址)
set mail = nothing
if err then
    SendMail=err.description
    err.clear
else
    SendMail="OK"
end if
if SendMail="OK" then
response.write"邮件发送成功,谢谢使用"
else
response.write"由于系统错误,邮件未能成功发送"
end if
%>[em7]

Anlex 2004-08-10 14:47
不好意思!代码传不上去?如果是遇到上面问题?
会有哪些原因呢?

雪域幽狐 2004-08-11 18:18
这代码必须在邮件服务器上运行方有效。
一般而言,上面的代码是可行的。“'”为“'”,在这里代码屏蔽没做好。

lyj 2004-08-28 11:01
email=request.form("email")
  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 = "stmp.163.com"   '发送邮件的服务器
  jmail.MailServerUserName = "*********"     '登录邮件服务器所需的用户名
     jmail.MailServerPassword = "**********"     '登录邮件服务器所需的密码
  JMail.AddRecipient = "email"  '邮件的收件人
  jmail.SenderName = "易通·中国"    '邮件发送者的姓名
  jmail.Sender = "webmanager@yit.cn"    '邮件发送者的邮件地址
  jmail.Priority = 1   '邮件的紧急程序,1 为最快,5 为最慢, 3 为默认值
  jmail.Subject = "祝贺您成功注册易通会员!"  '邮件的标题
  jmail.Body = "您好!"   '邮件的内容
  'jmail.AddRecipientBCC Email   '密件收件人的地址
  'jmail.AddRecipientCC Email   '邮件抄送者的地址
  jmail.Execute()   '执行邮件发送
  jmail.Close    '关闭邮件对象


上面的代码有问题吗?为什么我测试总是不能受到邮件?

雪域幽狐 2004-08-28 13:39
你的代码看不出什么问题,但重要的有一点,[color=#FF0000]发送程序必须在邮件服务器上进行[/color],个人的机子仅做调试,看看程序是否出错,即使装了SMTP服务器也未必能成功发送邮件,切记。

另:我上面公布的代码,经多人测试,是完全正确的,可稍加修改即可使用。

lyj 2004-08-29 09:00
应该怎么配置机器呀,邮件服务器又该怎么配置呀,我都不是很清楚,能不能解释一下呀,以前没用过,一点都不明白!

lyj 2004-08-29 09:17
不知道为什么,我按照你上面的写,总是出现系统错误,邮件发送失败!
应该怎么解决呀!

lyj 2004-08-29 09:23
我刚刚用阿江探测器察看了自己的机器,说服务器支持JMail.SmtpMail,

lyj 2004-08-29 11:59
Response.Write( JMail.ErrorMessage )返回:The message was undeliverable. All servers failed to receive the message    

Response.Write( JMail.ErrorSource )返回:smtp.content()

我执行有错误,以上是错误代码!是什么引起的亚!

雪域幽狐 2004-10-31 03:48
对改返回错误我也不太清楚
看样子是连接SMTP服务器出错
首先要确定该SMTP服务器是否能正常运行,开始的时候可以使用stmp.163.com的来测试,那个比较好

qianjinoil 2005-03-08 21:47
您好,我按照您上面的代码试了,我是虚拟空间,在www.10263.com上,我不知道这段代码对空间有什么要求还是别的什么?
冒昧一下,如果您方便,可以将您运行正常的代码放在这里交流好吗?[em4][em4][em4][em4][em4][em4]

qianjinoil 2005-03-08 21:52
[quote]


<%Dim  name,msg,SendMail
name=Request.Form("name")
Set msg =Server.Createobject("JMail.Message")
msg.silent = true
msg.Logging =true
msg.Charset = "gb2312"
msg.MailServerUserName = "handsomeli_520@163.com"  '输入smtp服务器验证登陆名(邮局中任何一个用户的Email地址)
msg.MailServerPassword = "**********" '输入smtp服务器验证密码  (用户Email帐号对应的密码)
msg.From = Request.Form("email") '发件人Email
if name<>"" then
msg.FromName = name '发件人姓名
end if
msg.AddRecipient   
Request.Form("toemail") '收件人Email
msg.Subject =Request.Form("subject") '信件主题
msg.Body =Request.Form("body")  '正文
msg.HTMLBody =Request.Form("htmlbody") 'HTML正文
msg.ReturnReceipt=true
msg.Send ("smtp.163.com")  'smtp服务器地址(企业邮局地址)
set msg =nothing
if err then
   SendMail=err.description
err.clear
else
   SendMail="OK"
end if
if SendMail="OK"  
then%>

邮件发送成功,谢谢使用


<%else%>
由于系统错误,邮件未能成功发送
<%end if%>





文件保存为“Sendmailto”


[em6][em6][em6][/quote]

qianjinoil 2005-03-08 21:55
不能用代码~~

雪域幽狐 2005-03-14 20:41
'为“'”,这是我以前的UBB解析代码和现在解析代码有差别造成的

qianjinoil 2005-03-18 17:03
[em7][em6][em6][em6][em6][em6][em6][em7]

zhouqi 2005-12-20 10:11
楼主你好,我想问一下我的程序运行没有错误,但是就是收不到邮件,我是在自己电脑上用的,SMTP服务我也装过的.操作系统是winxp professional
以下是代码:

Set msg = Server.CreateObject("JMail.Message")
msg.silent = true
msg.Logging = true
msg.Charset = "gb2312"
msg.MailServerUserName = "zhouqieach@tom.com" '输入smtp服务器验证登陆名 (邮局中任何一个用户的Email地址)
msg.MailServerPassword = "******"   '输入smtp服务器验证密码   (用户Email帐号对应的密码)
msg.From = "zhouqieach@tom.com"        '发件人Email
msg.FromName = "qzhou"     '发件人姓名
msg.AddRecipient rs("email")    '收件人Email
msg.Subject = "获取您的密码,来自"&PopGoShopName&" "  '信件主题
msg.Body = "您的密码为:"&rs("password")&" ,您的用户名为:"&memberID&"。"&PopGoShopName&",欢迎您经常访问。请记住我们的地址:"&PopGoDomainName&" "         '正文
msg.Send ("smtp.tom.com")               'smtp服务器地址(企业邮局地址)
set msg = nothing

zhouqi 2005-12-20 15:16
[em6]
The message was undeliverable. All servers failed to receive the message
.execute()
{
  Trying server mail:smtp.tom.com
  smtp.tom.com failed with the message: "WSAGetLastError() returned 10038, Socket operation on non-socket"
  No socket for server. ConnectToServer()
  1 of 1 servers failed
}

这是什么原因啊?

pemwoo 2006-07-15 10:51
想问一下我的邮件中有zip,jpeg,doc等文件,有超链接,以你的方式发的邮件图片不能正常显示,超链接被截断,附件中不该看到的看得到(就是邮件内容中的图片不应出现在附件中),请问怎么解决这些问题呢?

登陆后可评论