快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

一个免费的邮件列表源程序(一)

MailToList.asp
<%@ Language=JavaScript %>

<!--#include file = "include/SetGlobals.asp"-->
<!--#include file = "include/DBPath.asp"-->

<%
// output relevant meta tags
Init( "Mail to list" );

// output common top of page
Header( \\\'<a href="work.asp">Work</a> --> Mail to list\\\', 3 );

// output page content
Content ( );

// output common bottom of page
Footer( );
%>

<% /* standard page elements */ %>
<!--#include file = "utils/Init.asp"-->
<!--#include file = "utils/Database.asp"-->
<!--#include file = "utils/Header.asp"-->
<!--#include file = "utils/Footer.asp"-->

<%
// ============================================
// the content of this page
// ============================================
function Content ( )
{
Out ( \\\'<td width="20%">&nbsp;</td>\\\' );
Out ( \\\'<td width="60%">\\\' );

// if the form has a password, validate it first
// so that if it fails we can show the form again
var bSubmitted = (Request.Form.Count > 0);

// has the form been submitted?
if ( bSubmitted )
{
// get the password from the form...
sPassword = "" + Request.Form ( "password" );

// validate the password and moan if it fails
if ( sPassword != sDBPath )
{
Out ( \\\'<h3><font color="red">Invalid password!</font></h3>\\\' );
// pretend the form hasn\\\'t been sent yet
bSubmitted = false;
}
}

// show the form if not submitted yet
if ( !bSubmitted )
{
Out ( \\\'In <a href="Subscribe.asp">Part 1</a> I showed you how I allowed you to subscribe to my mailing list. Here\\\'s where I can post an email to members of that mailing list.\\\' );
Out ( \\\'<p>Strangely, I\\\'m not going to let you do it, but you <i>can</i> get the source code from the bottom of the page, and learn how I did it.\\\' );
// here\\\'s the form tag. the action attribute is the name of
// the file that will be called with the answer - in this case
// it\\\'s the same page. the method can be "post" to send the
// form data \\\'behind the scenes\\\' or "get" to appending the
// data to the URL in the style page.asp?data1=a&data2=b
//
// use post most of the time - it\\\'s neater and "get" is limited
// in the amount of data that can be sent.
Out ( \\\'<form action="MailToList.asp" method="post">\\\' );

// another table to line up the titles and inputs
Out ( \\\'<table border="0" cellpadding="0">\\\' );
Out ( \\\'<tr><td align="right" valign="top">\\\' );
Out ( \\\'Password:\\\' );
Out ( \\\'</td><td align="left" valign="top">\\\' );
// a simple text box. we\\\'ll reference it with the name "password"
// and show 37 characters on the form. use the maxlength
// attribute to set the maximum characters they can enter.
// use value="some text" to pre-fill the input with data.
Out ( \\\'<input type="password" name="password" size="30"></input>\\\' );
Out ( \\\'</td></tr>\\\' );

Out ( \\\'<tr><td align="right" valign="top">\\\' );
Out ( \\\'Message:\\\' );
Out ( \\\'</td><td align="left" valign="top">\\\' );
// textarea is a multiline text box. specify the size with the
// cols and rows attributes. wrap can be "off" (the default)
// "physical" or "virtual". as an example, consider the user
// typing in the following text in a 40 character wide input:
//
// "I wonder how this text will appear to the server when I send it?"
//
// wrap="off" will send it as typed, but the user has to scroll off
// to the right to see the text. (Horrid)
//
// wrap="physical" will physically split the line after the word
// \\\'server\\\' and send two lines to the server
//
// wrap="virtual" will send one line, as typed, but the user
// will see the text nicely wrap in the input. Perfect!
Out ( \\\'<textarea name="message" cols="30" rows="8" wrap="physical"></textarea>\\\' );
Out ( \\\'</td></tr>\\\' );

Out ( \\\'<tr><td align="right" valign="top">\\\' );
Out ( \\\'&nbsp;\\\' );
Out ( \\\'</td><td align="left" valign="top">\\\' );
// type=\\\'submit" provides a submit button to perform the
// form action. the button says "Submit" unless you override
// with the value attribute.
Out ( \\\'<input type="submit" value="Send Mail"></input>\\\' );
Out ( \\\'</td></tr>\\\' );

Out ( \\\'</table>\\\' );

Out ( \\\'</form>\\\' );
}
else
{
// get the message from the form
var sMessage = "" + Request.Form ( "message" );

// open the connection
DBInitConnection ( );

// get the emails addresses
var sSQL = \\\'SELECT Email FROM MailingList;\\\';

DBGetRecords ( sSQL );

var sEmailList = "";
var sSep = "";

while ( !oRecordSet.EOF )
{
sEmailList += sSep + oRecordSet ( 0 );

sSep = ";";

oRecordSet.MoveNext ( );
}

// free the connection
DBReleaseConnection ( );

Email ( \\\'It\\\'s a ShawThing - what\\\'s new?\\\', sEmailList, sMessage );

Out ( \\\'<p>Email sent successfully.<p>\\\' );
}

Out ( \\\'Want to see how this form to mail the subscribers was done? Click below to get all the source code!\\\' );
Out ( \\\'<p><center><a href="ShowSource.asp? page=MailToList"><img src="images/source.gif" border=0></a></center>\\\' );

Out ( \\\'</td>\\\' );
Out ( \\\'<td width="20%">&nbsp;</td>\\\' );
}

// ============================================
// email me!
// ============================================
function Email ( sSubject, sEmail, sMessage )
{
// send an email to the address just to confirm what just happened
var oMail = Server.CreateObject ( "CDONTS.NewMail" );

// setup the mail
oMail.From = oMail.To = \\\'MailingList@shawthing.com\\\';

oMail.Bcc = sEmail;
oMail.Importance = 1;

oMail.Subject = sSubject;
oMail.Body = sMessage;

// send it
oMail.Send ( );

// release object
oMail = null;
}
%>

utils/Database.asp
<%
// globals
var oConnection;
var oRecordSet;
var sConnection;

// ============================================
// example usage:
// DBInitConnection ( );
//
// var sSQL = "SELECT * FROM Somewhere";
//
// DBGetRecords ( sSQL );
//
// ...use oRecordSet
//
// DBReleaseRecords ( ); // optional step
//
// DBReleaseConnection ( );
// ============================================

// ============================================
// initializes database variables for first use on page
// ============================================
function DBInitConnection ( )
{
// don\\\'t open it again if already opened!
if ( sConnection != undefined )
return;

// get connection object
oConnection = Server.CreateObject( \\\'ADODB.Connection\\\' );

// get the database connection string
// use MapPath to make relative path into physical path
sConnection = \\\'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\\' + Server.MapPath ( sDBPath );

// open the connection
oConnection.Open( sConnection );

// as an attempt at optimization we now open
// the recordset here, not in DBGetRecords()
oRecordSet = Server.CreateObject ( \\\'ADODB.Recordset\\\' );
}

// ============================================
// tidies up after DBInitConnection
// ============================================
function DBReleaseConnection ( )
{
// don\\\'t release the connection if not connected!
if ( sConnection == undefined )
return;

// as an attempt at optimization we now close
// the recordset here, not in DBReleaseRecords()
if ( oRecordSet.State != 0 )
oRecordSet.Close();
oRecordSet = undefined;

oConnection.Close();
oConnection = undefined;

sConnection = undefined;
}

// ============================================
// executes the passed in SQL statement
// and returns the oRecordSet object
// ============================================
function DBGetRecords ( sSQL )
{
// remember that this can fail if passed garbage, and hence
// \\\'oRecordSet\\\' will already be \\\'closed\\\'
oRecordSet = oConnection.Execute( sSQL );
}

// ============================================
// tidies up after DBGetRecords
// ============================================
function DBReleaseRecords ( )
{
// IMPORTANT: THIS FUNCTION INTENTIONALLY BLANK
// as an attempt at optimization we now open/close
// the recordset with the connection, not separately
// so all code was moved to DBReleaseConnection.

// it is recommended that you still call this function as soon
// as the recordset is finished with.

// note that it is assumed by the caller that it is legal
// to call DBReleaseConnection without calling this function
}
%>
返回类别: 教程
上一教程: HTML条形图函数库
下一教程: 使用FORMATNUMBER()与FORMATPERCENT()格式化数字

您可以阅读与"一个免费的邮件列表源程序(一)"相关的教程:
· 一个免费的邮件列表源程序(二)
· 一个免费的邮件列表源程序(三)
· 一个免费的简朴聊天室源代码
· ASP环境下邮件列表功能的实现 (二)
· 一个投票系统的源程序
    微笑服务 优质保证 索取样品