分享
 
 
 

使用ASPMail组件发送数字卡片

王朝asp·作者佚名  2008-05-30
窄屏简体版  字體: |||超大  

Sending Digital PostCards with asp and the free component ASPEmail from Persits software.

By Joao Vieira

What is a Digital Postcard?

A digital postcard is a image a net surfer picks out, along with an accompanying personal message. The net surfer "sends" the postcard by supplying a friend's email address. A link is then emailed to the address supplied. The link takes the receiver of the digital postcard to the site which displays the image and contains the personal message.

First you must create a database to house the information for the postcards. (I use a DataBase to put the PostCards information so that when a person gets the mail with the post card only have to click on the link and the page apears, goin to DB to get the Data. So here it is the structure of my DataBase (you can make your own, with more information if you intend to.

Postal

ID_POSTAL Autonumber

passw integer

postal Text

nameto Text

namefrom Text

emailfrom Text

emailto Text

Message Text

Data Text

For the digital postcard system to work, you will need a number of images for the postcards. In my example I have six unique postcards, and 12 images for the postcards: a thumbnail and normal size image for each postcard. I also use images for buttons, the main ones being View, Send, and Repeat.

Concerning the code, I want to warn you that I am not going to be going deep into the HTML aspect; I will concentrate on the ASP. If you have any questions about this article, please contact me.

You will have to make an HTML form. I used the POST method, because I don't like to see all ofthe information submitted in the address link box. (Related Article! Passing Data Between ASP Pages)

FILE: makin.html

This file contains the form where we get all of the information from the user. This information will be used to make the digital postcard.

name="postalsent"

method="post"

action="view.asp?fromn=seeit"

target="_self"

.....

......

border=0 height=51 width=110

......

As you see in this example I use an image for Submit Button, and another image for reset button, at the reset button I made a reload of the page (refresh) that really cleans all the fields.

At action="view.asp?fromn=seeit" I use fromn to know if view.asp is being accessed from the creation phase or from the person that wants to view the digital postcard that was sent to them. I chose to set fromn to Seeit if we are still in the creation phase, and out if we are wanting to view the postcard.

In the file makin.html all we want to do is to send the information collected in the above FORM. The fields that i'm using are the ones named above: R1, nameto, mailto, namefrom, emailfrom.

FILE: view.asp

This the the important part, here we will see if there is a person PReviewing the card before sending it, or a person viewing card already sent. We will take all the information sent by the POST form of the previous file.

Dim fromn

Dim ident

Dim psw

' erring tells us if the card already

' exists. By default, we assum it does.

Dim erring

' I normaly use 0 and 1 for boolean,

' cause it is quicker

erring = 0

' Receiving the information

' from the link that led to this file;

' this one tell us

' what kind of access we're doing

fromn = Request.QueryString("fromn")

' here we take the ID from the post card,

' for us to know wich card we want to see.

' All this information will be compared with

' the one in the database.

ident = Request.QueryString("ident")

' This is the passWord

' We do not want a person that knows there exists a

' postcard with ID 13 tries to see one with ID 12.

' We will generate a random number for the password

psw = Request.QueryString("psw")

if fromn = "seeit" then

' If we just want to see the preview

' I have created sessions to keep the information,

' so that I can view the data at any step

session("postal") = Request.form("R1")

session("namefrom") = Request.form("namefrom")

session("emailfrom") = Request.form("emailfrom")

session("nameto") = Request.form("nameto")

session("emailto") = Request.form("emailto")

session("message") = Request.form("message")

else

'Someone is wanting to see an already sent card

'Open the DB connection

Set Conn = Server.CreateObject("ADODB.Connection")

' The DSN you made for the database

conn.open "DSN=postal;"

'Create a recordset

Set rs = Server.CreateObject("ADODB.Recordset")

' This is asimple SQL statement that see if the ID and

' password are connected in the DB

SQLStmt = "SELECT * FROM postal WHERE ID_POSTAL = " %26amp; _

CInt(ident) %26amp; " AND passw = " %26amp; CInt(psw)

' Execute the SQL statementz

rs.Open SQLstmt, Conn, 1, 2

if rs.EOF then

'Post card doesn't exist or invalid password!

erring = 1

else

'Postcard does exist. Populate the session

'variables with the database info.

session("postal") = rs("postal")

session("namefrom") = rs("namefrom")

session("emailfrom") = rs("emailfrom")

session("nameto") = rs("nameto")

session("emailto") = rs("emailto")

session("message") = rs("message")

'if fromn have "seeit we will show =

end if

end if

%

marginheight="0"

marginwidth="0"

topmargin="0"

leftmargin="0"

background="images/something.gif"

bgcolor="#002400"

text="#FCC403"

' At this time we will see if there has been an error

' We also want to make sure the form data is valid.

if erring 1 and (fromn="seeit" or fromn="out") and

session("postal") "" then

' if everything is correct we show the information

%

.jpg" hspace="5"

border="2" WIDTH="354" HEIGHT="231"

bordercolor="#000000" height="202"

From:

Email:

To:

Email:

Message:

'if fromn == "seeit" we will show the

'buttons "to send" and "to retry"

if fromn="seeit" then

%

height="53" border="0"

%26amp;nbsp;%26amp;nbsp;%26amp;nbsp;%26amp;nbsp;%26amp;nbsp;%26amp;nbsp;%26amp;nbsp;

height="53" border="0"

' Someone is viewing a card already made

' Show the reply button

else

%

width="176"

end if

' This else will only be reached if there is no card

' (i.e. the password was incorrect) We need to show

' an error message.

else

%

border="0"

end if

' This is where i remove all the postcards

' in the DB with more than 30 days old.

' I do not want to make a huge DB, so I clean

' it just to have the messages of the last 30 days.

' You can now ask.. "-So, why did you put this code here?"

' My response is:

' "- Because this is the place where you fill the DB,

' so if you are going to put another record

' at the DB, lets clean some old stuff."

' That being said, let's clean the db! :)

' Here we will get the system date (yes, the server date)

d = now()

' We will decrease 30 days at the date we have

d = DateAdd("d",-30,d)

Set Conn = Server.CreateObject("ADODB.Connection")

conn.open "DSN=postal;"

Set rs = Server.CreateObject("ADODB.Recordset")

' Run a SQL query that will remove all out of date records

SQLStmt = "DELETE FROM postal WHERE data

'Run the query

rs.Open SQLstmt,Conn,1,2

%

FILE: enviado.asp

At this time, we will validate all the information that it is supposed to sent as well as the data that we

will put in the DB. If everything is well we will send the information to the receiver by e-mail. I will

explain later how to get the free e-mail component, how to register it at the server, and how to use it.

' This is the variable that I use to the ID

' of the post card

Dim identifier

' goby is anotther boolean to

' see if there is an error in the data

Dim goby

goby = 1 'lets start it with True

%

marginheight="0"

marginwidth="0"

topmargin="0"

leftmargin="0"

background="images/something.gif"

bgcolor="#002400"

text="#FCC403"

' Let's validate the name; the length of the

' name must be at least 2 characters long

if len(session("nameto"))

' So if there is any problem there will be an error

goby = 0

end if

if len(session("namefrom"))

goby = 0

end if

' Validate the e-mail, I have written

' an arthicle about this, take a look at it

If Len(session("emailfrom"))

goby = 0

Else

If InStr(1, session("emailfrom"), "@", 1)

goby = 0

Else

If InStr(1,session("emailfrom"), ".", 1)

goby = 0

End If

End If

End If

If Len(session("emailto"))

goby = 0

Else

If InStr(1, session("emailto"), "@", 1)

goby = 0

Else

If InStr(1,session("emailto"), ".", 1)

goby = 0

End If

End If

End If

' Make sure the message is less than 500 characters.

If len(session("message")) = 500 Then

goby = 0

End If

' If there are errors, then let the user know

' And make him/her correct the data

if goby = 0 then %

height="53" border="0"

end if

' There are no errors. Put the data in the DB

' and send the link to the receiver via email.

If goby = 1 then

Set Conn = Server.CreateObject("ADODB.Connection")

conn.open"DSN=postal;"

Set rs = Server.CreateObject("ADODB.Recordset")

'We need to insert a record into the database

SQLStmt = "INSERT INTO Postcard (" %26amp; _

"passw, postal, nameto, namefrom, " %26amp; _

"emailfrom, emailto, message, data) " %26amp; _

"VALUES ("

' We need a random number for our password, so

' use randomize/rnd to make a random number.

randomize()

passw = Int((9999-1)*Rnd + 1)

SQLStmt = SQLStmt %26amp; passw %26amp; ",'" %26amp; session("postal") %26amp; _

"','" %26amp; session("nameto") %26amp; "','" %26amp; _

session("namefrom") %26amp; "','" %26amp; _

session("emailfrom") %26amp; "','" %26amp; _

session("emailto") %26amp; "','" %26amp; _

session("message") %26amp; "','" %26amp; session("data") %26amp; "')"

' Write information to database

rs.Open SQLStmt, Conn

' Now you will see how to use the Free Persits

' E-Mail component

' First, Create the Mail object

Set Mail = Server.CreateObject("Persits.MailSender")

' Put the mail server you are using

Mail.Host = "mail.mailserver.com"

' Send the information of the

' person that is sending the e-mail

Mail.From = session("emailfrom")

' Who you're sending the email to.

Mail.FromName = session("namefrom")

' Put the email to send to, as well as the name of the person

Mail.AddAddress session("emailto"), session("nameto")

' Subject of the email

Mail.Subject = "Digital PostCard to " %26amp; session("nameto")

' Print the body of the email

enviar = "Let me inform you that " %26amp; session("namefrom") %26amp; _

Chr(13) %26amp; Chr(10) %26amp; _

"have sent you a digital card. To see " %26amp; _

"it follow the link :" %26amp; _

Chr(13) %26amp; Chr(10) %26amp; Chr(13) %26amp; Chr(10) %26amp; _

"http://www.???????.com/view.asp?fromn=out%26amp;" %26amp; _

"ident=" %26amp; identifier %26amp; _

"%26amp;psw=" %26amp; passw %26amp; " " %26amp; Chr(13) %26amp; Chr(10) %26amp; _

" your card is available till the day " %26amp; _

formatDateTime(d,2) %26amp; _

Chr(13) %26amp; Chr(10) %26amp; Chr(13) %26amp; Chr(10) %26amp; _

Chr(13) %26amp; Chr(10) %26amp; _

" Thanks"

Mail.Body = enviar

'Just skip if there are any errors...

On Error resume Next

' This will send the email

Mail.Send

' Display an error message if there was an error

If Err 0 Then %

border="0"

'Comment out this code if you want to see

'the error number

'Response.Write "

" %26amp; "Error found : " %26amp; _

Err.description %26amp; "

"

Response.Write "SERVER SIDE ERROR, " %26amp; _

"contact site webmaster.

"

goby = 0

Else

Response.Write "

POSTCARD WAS SENT " %26amp; _

"NO PROBLEMS...

"

End if

End if

' I think that you have seen that I use the javaScript history.back

' and go. I use it so when the user come back he don't

' loose any information already entered into the form.

%

height="53" border="0"

Get the E-Mail free component:http://www.aspemail.com/

Let me explain how to set it up. Put the component wherever you want, I usually put the components I use

in the directory C:\Inetpub\components\. Then register it (after you put it in the directory you want) by

typing:

regsvr32 AspEmail.dll

from the command line. That's all! Remember, the email code won't work unless you register the component!

If you have any questions, please contact me:http://www.4guysfromrolla.com/webtech/joao.shtml

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有