目的:
利用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>
各位可根据以上代码改写成注册用户时通知用户的发送邮件代码。
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等文件,有超链接,以你的方式发的邮件图片不能正常显示,超链接被截断,附件中不该看到的看得到(就是邮件内容中的图片不应出现在附件中),请问怎么解决这些问题呢?