找回密码
 入住遨海湾
搜索
网站解决方案专享优惠-3折上云
查看: 1641|回复: 3

ASP发信的几种方法

[复制链接]
发表于 2007-2-2 15:06:00 | 显示全部楼层 |阅读模式

登录后查才能浏览下载更多咨询,有问题联系QQ:3283999

您需要 登录 才可以下载或查看,没有账号?入住遨海湾

×
使用CDO.Message发邮件 


Windows 2003下不注册组件用ASP发邮件 

JMail.Message 


CDONTS.NewMail 



在做购物车的过程中要用到这个发邮件的问题. 
我们现在使用CDO.Message+SMTP来发信. 

SMTP.可以去申请一个免费邮件.获取SMTP地址,和密码. 

下面贴上代码. 

已经经过测试了. 


------------------------------------------------------------------------- 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><head> 
<meta http-equiv="Content-Type" content="text/html; charset=" /> 
<title>CDO.Message邮件系统测试</title> 
<script language="JavaScript" type="text/javascript"><!-- 
function VF_form1(){ //v2.0 
<!--start_of_saved_settings--> 
<!--type,textarea,name,m_neirong,required,true,errMsg,请填写邮件内容--> 
<!--type,text,name,m_zhuzi,required,true,errMsg,请填写邮件的主题--> 
<!--type,text,name,m_user,required,true,isEmail,errMsg,对不起.你未填写邮箱地址或邮箱地址不正确--> 
<!--end_of_saved_settings--> 
   var theForm = document.form1; 
   var emailRE = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
   var errMsg = ""; 
   var setfocus = ""; 

   if (theForm['m_neirong'].value == ""){ 
      errMsg = "请填写邮件内容"; 
      setfocus = "['m_neirong']"; 
   } 
   if (theForm['m_zhuzi'].value == ""){ 
      errMsg = "请填写邮件的主题"; 
      setfocus = "['m_zhuzi']"; 
   } 
   if (!emailRE.test(theForm['m_user'].value)){ 
      errMsg = "对不起.你未填写邮箱地址或邮箱地址不正确"; 
      setfocus = "['m_user']"; 
   } 
   if (errMsg != ""){ 
      alert(errMsg); 
      eval("theForm" + setfocus + ".focus()"); 
   } 
   else theForm.submit(); 

function TJK_noWayBack(){ // www.yaosansi.com 
history.go(1); 

TJK_noWayBack(); 
//--> 
</script> 
<style type="text/css"> 
<!-- 
.td { 
   font-family: "宋体"; 
   font-size: 12px; 
   line-height: 25px; 
   text-decoration: none; 
   color: #000000; 

--> 
</style> 
</head> 


<div align="center"> 
<%If (CStr(Request("MM_insert")) = "form1") Then%> 
<!--发送代码--> 
<% 
Const cdoSendUsingMethod="http://schemas.microsoft.com/cdo/configuration/sendusing" 
Const cdoSendUsingPort=2 
Const cdoSMTPServer="http://schemas.microsoft.com/cdo/configuration/smtpserver" 
Const cdoSMTPServerPort="http://schemas.microsoft.com/cdo/configuration/smtpserverport" 
Const cdoSMTPConnectionTimeout="http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" 
Const cdoSMTPAuthenticate="http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" 
Const cdoBasic=1 
Const cdoSendUserName="http://schemas.microsoft.com/cdo/configuration/sendusername" 
Const cdoSendPassword="http://schemas.microsoft.com/cdo/configuration/sendpassword" 

Dim objConfig ' As CDO.Configuration 
Dim objMessage ' As CDO.Message 
Dim Fields ' As ADODB.Fields 

Set objConfig = Server.CreateObject("CDO.Configuration") 
Set Fields = objConfig.Fields 

With Fields 
.Item(cdoSendUsingMethod) = cdoSendUsingPort 
.Item(cdoSMTPServer) = "SMTP服务器" '改成可用的外部邮件服务器域名 
.Item(cdoSMTPServerPort) = 25 
.Item(cdoSMTPConnectionTimeout) = 10 
.Item(cdoSMTPAuthenticate) = cdoBasic 
.Item(cdoSendUserName) = "用户名" '以上服务器的用户名 
.Item(cdoSendPassword) = "密码" '密码 
.Update 
End With 

Set objMessage = Server.CreateObject("CDO.Message") 
Set objMessage.Configuration = objConfig 

With objMessage 
.To = Trim(Request.Form("m_user")) '改成接收者的邮件地址 
.From = "发件人的地址(要和上面的邮件系统相同)" '改成发送人的邮件地址 
.Subject = Trim(Request.Form("m_zhuzi")) '标题 
.TextBody = Trim(Request.Form("m_neirong")) '正文 
'.AddAttachment "C:\Scripts\Output.txt"'邮件附件 
.Send 
End With 

Set Fields = Nothing 
Set objMessage = Nothing 
Set objConfig = Nothing 
%> 
<!--发送代码--> 
邮件发送成功. 
已经送达 
<%=trim(Request.Form("m_user"))%>  <a href="mail.asp">返回继续发送</a> 
<%else%> 

</div> 
<form action="<%=MM_editAction%>" method="post" name="form1" onSubmit="VF_form1();return false;"> 
<table width="713" border="0" align="center" cellpadding="0" cellspacing="0" class="td"> 
<tr> 
<td height="30" align="center">收件人</td> 
<td height="30"><input name="m_user" type="text" id="m_user" size="40" /></td> 
</tr> 
<tr> 
<td width="90" height="30" align="center">邮件主题</td> 
<td width="245" height="30"><input name="m_zhuzi" type="text" id="m_zhuzi" size="40" /></td> 
</tr> 
<tr> 
<td height="30" align="center">邮件内容</td> 
<td height="30"><textarea name="m_neirong" cols="70" rows="15" id="m_neirong"></textarea></td> 
</tr> 
<tr> 
<td height="30" colspan="2" align="center"><input type="hidden" name="MM_insert" value="form1" /> 
<input type="submit" name="Submit" value=" 发送邮件 " /></td> 
</tr> 
</table> 
</form> 
<%end if%> 

遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2007-2-2 15:07:00 | 显示全部楼层

Windows 2003下不注册组件用ASP发邮件

其实ASP可以做很多事,只是大家不知道怎么用而以。微软为asp提供了非常多的现成有用的组件,而这些组件却没有人知道,如用CDO.Message发送邮件。

    什么是CDO.Message?在winnt和win2k下发送邮件要用CDONTS.NewMail,CDONTS.NewMail组件是需要注册的,很简单,只要在服务器上运行命令行regsvr32 Cdonts.dll,在弹出的对话框中确定即可,使用CDONTS.NewMail服务还需安装有iis自带的smtp。到了windows2003,系统就没有附带Cdonts.dll文件了,只剩下一个类似的文件cdosys.dll,当然这个文件在win2k也是有的(需要注册组件),不过2003下好的是什么呢?该组件无需手动注册,系统已经自动注册了。现在我们来看看如何使用该组件吧。

<%
Dim cm
Set cm=Server.CreateObject("CDO.Message")
\\\'创建对象
cm.From="from@test.com"
\\\'设置发信人的邮箱
cm.To="to@test.com"
\\\'设置收信人的邮箱
cm.Subject="我发现一个可以在线订阅RSS的网站,以后不用再安装什么软件了。"
\\\'设定邮件的主题
\\\'cm.TextBody=http://www.ceowen.com
\\\'上面是使用普通的文本格式发送邮件,只能是文字,不能支持html,所以这里不用

cm.HtmlBody="Online RSS Feeds Reader 是一个在线的RSS新闻阅读系统。"&_
"无需下载安装,只要注册了之后你就可以拥有和软件一样强大功能的RSS在线订阅聚合新闻的系统了。"&_
"不管你在任何地方,只要你能上网,你就能阅读你喜欢的订阅。"&_
"快去注册吧:<a href=http://www.ceowen.net/rss/>http://www.ceowen.net/rss/</a>"

\\\'上面就是你构建的html正文,这样发出的邮件就比只有文字的好看多了。不要说你不会html吧

\\\'cm.AddAttachment Server.MapPath("test.zip")
\\\'如果有需要发送附件的话就用上面的方法把文件附加进去。

cm.Send
\\\'最后当然是执行发送了
Set cm=Nothing
\\\'发送成功后即时释放对象

Response.Write("发送邮件成功。")
%>
遨海湾-心灵的港湾 www.aosea.com
回复

使用道具 举报

 楼主| 发表于 2007-2-2 15:08:00 | 显示全部楼层

JMail.Message 发送邮件

在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少。下面是一个Jmail发邮件的例子代码:
<%
On error resume next
Dim JMail, contentId
Set JMail = Server.CreateObject("JMail.Message")
JMail.Charset = "gb2312" ' 邮件字符集,默认为"US-ASCII"
' JMail.ISOEncodeHeaders = False ' 是否进行ISO编码,默认为True
' 发送者信息(可用变量方式赋值)
JMail.From = "test@ceowen.net" ' 发送者地址
JMail.FromName = "网站管理员" ' 发送者姓名
JMail.Subject = "邮件主题" ' 邮件主题
' 身份验证
JMail.MailServerUserName = "myusername" ' 身份验证的用户名
JMail.MailServerPassword = "mypassword" ' 身份验证的密码
' 设置优先级,范围从1到5,越大的优先级越高,3为普通
JMail.Priority = 3
JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
' 加入一个收件人【变量email:收件人地址】可以同一语句重复加入多个
JMail.AddRecipient("aaa@ceowen.com")
' 加入附件【变量filename:附件文件的绝对地址,确保用户IUSR_机器名有访问的权限】
' 【参数设置是(True)否(False)为Inline方式】
'contentId = JMail.AddAttachment (Server.MapPath("jmail.asp"), True)
' 邮件主体(HTML(注意信件内链接附件的方式))
JMail.HTMLBody = "<html><head><META content=zh-cn http-equiv=Content-Language><meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312""><style type=text/css>A:link { FONT-SIZE: 9pt; TEXT-DECORATION: none; color: #000000}A:visited {FONT-SIZE: 9pt; TEXT-DECORATION: none; color: #666666}A:hover {COLOR: #ff6600; FONT-SIZE: 9pt; TEXT-DECORATION: underline}BODY {FONT-SIZE: 9pt} --></style></head><body><font color=red>邮件正文</font><br><font color=green>邮件正文</font><br><b>邮件正文</b></body></html>"
' 邮件主体(文本部分)
JMail.Body = "我们的邮件采用了HTML格式,但是您的邮件查看软件可能不支持。。。邮件正文,邮件正文,邮件正文"
' 发送【调用格式:objJMail.Send([username:password@]SMTPServerAddress[ort])】
JMail.Send("smtp.163.com")
' 关闭并清除对象
JMail.Close()
Set JMail = Nothing
if err.number<>0 then
response.write "发送发送失败!"
else
response.write "邮件发送成功!"
end if
%>
遨海湾-心灵的港湾 www.aosea.com
回复

使用道具 举报

 楼主| 发表于 2007-2-2 15:10:00 | 显示全部楼层

CDONTS.NewMail

在ASP中发送Email时往往需要一个COM组件支持,如果你没有第三方的Email组件,你可以使用IIS本身提供CDONTS  EMail组件。这个组件使用时需要安装和启动SMTP服务。这个组件的名称为CDONTS.DLL,使用前需要使用RegSvr32注册这个组件。

  CDONTS组件提供了一系列对象,包括AddressEntry、Attachment、Attachments、Folder、Message、Messages、NewMail、Recipient、Recipients、Session,我们经常使用的是NewMail对象。下面是NewMail对象提供的方法和属性:

名称

功能 格式
Attach 添加附件 Sub AttachFile(Source, [FileName], [EncodingMethod])
AttachURL 以格式添加附加和数据 Sub AttachURL(Source,ContentLocation, [ContentBase], [EncodingMethod])
BCC 以“,”分隔的接收者列表(暗送) 字符串类型属性
Body TextHTML

字符串类型属性
bodyformat 邮件正文格式 0:HTMl1:Text
CC 以“,”分隔的接收者列表(抄送) 字符串类型属性
ContentBase 带有附件的邮件中正文采用的基地址 字符串类型属性
ContentLocation 带有附件的邮件中正文采用的 字符串类型属性
From 邮件发送方地址 字符串类型属性
Importance 邮件级别 0: 1 2:
Send 发送邮件 Sub Send([From], [To], [Subject], [Body], [Importance]) 各个参数可以参考上下文属性
SetLocaleIDs 设置新消息的代码页标识 Sub SetLocaleIDs(CodePageID As Long)
Subject 邮件主题 字符串类型属性
To 以“,”分隔的接收者地址列表 字符串类型属性
Value 任意的邮件头的值 字符串类型属性
Version 当前集合数据对象库()的版本号 只读字符串类型属性

在使用有关对象的方法时,方括号参数可以省略。

下面是采用ASP使用的例子:

<%
Dim MailObject
Set MailObject = Server.CreateObject("CDONTS.NewMail")
MailObject.Send "发送方邮件地址","接收方邮件地址","主题","邮件正文"

发送附件时可以这样:
Dim MailObject

Set MailObject = Server.CreateObject("CDONTS.NewMail")
att_fileName="附件文件名完整路径"
f_name="文件名"
MailObject.From="在这填写发件人地址"
MailObject.To="在这填写接收人地址"
MailObject.Subject="填写主题"
MailObject.Body="填写正文"
MailObject.AttachFile att_file,f_name
MailObject.Send

%>

注意:发送邮件时需要IUSR_<机器名>用户对c:\Inetpub\mailroot目录有读写权限。

遨海湾-心灵的港湾 www.aosea.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

网站解决方案专享优惠-3折上云

QQ|手机版|小黑屋|遨海湾超级社区

GMT+8, 2024-11-24 19:20

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表