您的位置:首页技术开发ASP技巧 → 使用ASPMail组件发送数字卡片

使用ASPMail组件发送数字卡片

时间:2004/11/7 4:10:00来源:本站整理作者:蓝点我要评论(0)

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.



<form  

     name="postalsent"  

     method="post"  

     action="view.asp?fromn=seeit"  

     target="_self"

>



    



    

  



  

    



    



    



......



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 = " & _

               CInt(ident) & " AND passw = " & 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

%>





<body

     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

%>



 



       

         

       

    


       

      

       

    


                        

          

       

    


       

          

       

    


        

           

        

    


        

           

        

    


        

           

......









  

  

  

  

  

  <input type="image" name="bseeit" src="images/seesentbotton.gif"

      border=0 height=51 width=110>

   



   


     

        

     

   



  



    


      


      <img src="images/<%=session("postal")%>.jpg" hspace="5"

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

    



    

       <table border="0" cellspacing="3" width="100%" cellpadding="3"

              bordercolor="#000000" height="202">

         

           

              



              


                From:

                <%=session("namefrom")%>

                


                Email:

                <%=session("emailfrom")%>

                


                To:

                <%=session("nameto")%>

                


                Email:

                <%=session("emailto")%>

              

            



          



          

            

              

                Message:


                

                <%=session("message")%>

                

              

             

          



          

            

            <%

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

            'buttons "to send" and "to retry"

               if fromn="seeit" then  

            %>

              




              

                <img src="images/rebuildbotton.gif" width="60"

                     height="53" border="0">

              

          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

              

                 <img src="images/sendbotton.gif" width="41"

                      height="53" border="0">

              

             



           

           

         

      

   





           <%

            ' Someone is viewing a card already made

         ' Show the reply button  

            else  

           %>

              




              

                 <img border="0" height="72" src="images/replybotton.gif"

                       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

%>  








  <img src="images/error.gif" width="322" height="53"

     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 < #" & d & "#" '



'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



%>





<body

     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")) < 2 then  

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

     goby = 0  

end if





if len(session("namefrom")) < 2 then

     goby = 0

end if





' Validate the e-mail, I have written

' an arthicle about this, take a look at it

If Len(session("emailfrom")) <= 5 Then  

     goby = 0

Else

     If InStr(1, session("emailfrom"), "@", 1) < 2 Then

         goby = 0

     Else

         If InStr(1,session("emailfrom"), ".", 1) < 4 Then

            goby = 0

         End If

     End If

End If



If Len(session("emailto")) <= 5 Then

     goby = 0  

Else

     If InStr(1, session("emailto"), "@", 1) < 2 Then

         goby = 0

     Else

         If InStr(1,session("emailto"), ".", 1) < 4 Then

             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 %>



   






   

      <img src="images/error.gif" width="322"  

           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 (" & _

              "passw, postal, nameto, namefrom, " & _

              "emailfrom, emailto, message, data) " & _

           "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 & passw & ",'" & session("postal") & _

               "','" & session("nameto") & "','" & _

               session("namefrom") & "','" & _

               session("emailfrom") & "','" & _

               session("emailto") & "','" & _

               session("message") & "','" & session("data") & "')"



     ' 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 " & session("nameto")



     ' Print the body of the email

     enviar = "Let me inform you that " & session("namefrom") & _

              Chr(13) & Chr(10) & _

              "have sent you a digital card. To see " & _

              "it follow the link :" & _

              Chr(13) & Chr(10) & Chr(13) & Chr(10) & _

              "http://www.???????.com/view.asp?fromn=out&" & _

              "ident=" & identifier & _

              "&psw=" & passw & " " & Chr(13) & Chr(10) & _

              " your card is available till the day " & _   

              formatDateTime(d,2) & _

              Chr(13) & Chr(10) & Chr(13) & Chr(10) & _

              Chr(13) & Chr(10) & _

              "        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 %>

         <img src="images/error.gif" width="322" height="53"  

               border="0">

     <%

         'Comment out this code if you want to see

         'the error number

         'Response.Write "

" & "Error found : " & _

                         Err.description & "

"



         Response.Write "

SERVER SIDE ERROR, " & _

                        "contact site webmaster.

"



         goby = 0  

     Else

          Response.Write "

POSTCARD WAS SENT " & _

                         "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.

%>




    

        <img src="../images/rebuiltbutton.gif" width="60"  

              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



相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案