This section provides an example of each of the following uses of POP mail:
You can retrieve only the headers of your messages by using the GetHeaderOnly value for the action attribute of the cfpop tag. Whether you use cfpop to retrieve the header or the entire message, ColdFusion returns a query object that contains one row for each message in the specified mailbox. The query object, whose name is specified in the name attribute of the cfpop tag, consists of the following fields:
<html> <head> <title>POP Mail Message Header Example</title> </head> <body> <h2>This example retrieves message header information:</h2> <cfpop server="mail.company.com" username=#myusername# password=#mypassword# action="GetHeaderOnly" name="Sample"> <cfoutput query="Sample"> MessageNumber: #HTMLEditFormat(Sample.messageNumber)# <br> To: #HTMLEditFormat(Sample.to)# <br> From: #HTMLEditFormat(Sample.from)# <br> Subject: #HTMLEditFormat(Sample.subject)# <br> Date: #HTMLEditFormat(Sample.date)#<br> Cc: #HTMLEditFormat(Sample.cc)# <br> ReplyTo: #HTMLEditFormat(Sample.replyTo)# <br><br> </cfoutput> </body> </html>
<cfpop server="mail.company.com"
username=#myusername#
password=#mypassword#
This code retrieves the message headers and stores them in a cfpop record set called Sample. For more information about working with record set data, see Chapter 22, "Using Query of Queries".
The ColdFusion function HTMLEditFormat replaces characters that have meaning in HTML, such as the less than (<) and greater than (>) signs that can surround detailed e-mail address information, with escaped characters such as < and >.
In addition, you can process the date returned by cfpop with ParseDateTime, which accepts an argument for converting POP date/time objects into a CFML date-time object.
You can reference any of these columns in a cfoutput tag, as the following example shows:
<cfoutput>
#ParseDateTime(queryname.date, "POP")#
#HTMLCodeFormat(queryname.from)#
#HTMLCodeFormat(queryname.messageNumber)#
</cfoutput>
For information on these ColdFusion functions, see CFML Reference.
When you use the cfpop tag with action="GetAll", ColdFusion returns the same columns as with getheaderonly, plus two additional columns, body and header.
<html> <head><title>POP Mail Message Body Example</title></head> <body> <h2>This example adds retrieval of the message body:</h2> <cfpop server="mail.company.com" username=#myusername# password=#mypassword# action="GetAll" name="Sample"> <cfoutput query="Sample"> MessageNumber: #HTMLEditFormat(Sample.messageNumber)# <br> To: #Sample.to# <br> From: #HTMLEditFormat(Sample.from)# <br> Subject: #HTMLEditFormat(Sample.subject)# <br> Date: #HTMLEditFormat(Sample.date)#<br> Cc: #HTMLEditFormat(Sample.cc)# <br> ReplyTo: #HTMLEditFormat(Sample.replyTo)# <br> <br> Body:<br> #Sample.body#<br> <br> Header:<br> #HTMLCodeFormat(Sample.header)#<br> <hr> </cfoutput> </body>
</html>
<cfpop server="mail.company.com"
username=#myusername#
password=#mypassword#
This example does not use a CFML function to encode the body contents. As a result, the browser displays the formatted message as you would normally see it in a mail program that supports HTML messages.
When you use the cfpop tag with action="getAll", and use the attachmentpath attribute to specify the directory in which to store attachments, ColdFusion retrieves any attachment files from the POP server and saves them in the specified directory. The cfpop tag also adds the following two columns to the query it creates:
attachments Contains a tab-separated list of all attachment names.
attachmentfiles Contains a tab-separated list of the locations of the attachment files. Use the cffile tag to delete these temporary files.
You must ensure that the attachmentpath directory exists before you use the cfpop tag to retrieve attachments. ColdFusion generates an error if it attempts to write an attachment file to a nonexistent directory.
If a message has no attachments, the attachments and attachmentfiles columns contain empty strings.
<html> <head> <title>POP Mail Message Attachment Example</title> </head> <body> <h2>This example retrieves message header, body, and all attachments:</h2> <cfpop server="mail.company.com" username=#myusername# password=#mypassword# action="GetAll" attachmentpath="c:\temp\attachments" name="Sample"> <cfoutput query="Sample"> MessageNumber: #HTMLEditFormat(Sample.MessageNumber)# <br> To: #HTMLEditFormat(Sample.to)# <br> From: #HTMLEditFormat(Sample.from)# <br> Subject: #HTMLEditFormat(Sample.subject)# <br> Date: #HTMLEditFormat(Sample.date)# <br> Cc: #HTMLEditFormat(Sample.cc)# <br> ReplyTo: #HTMLEditFormat(Sample.ReplyTo)# <br> Attachments: #HTMLEditFormat(Sample.Attachments)# <br> Attachment Files: #HTMLEditFormat(Sample.AttachmentFiles)# <br> <br> Body:<br> #Sample.body# <br> <br> Header:<br> HTMLCodeFormat(Sample.header)# <br> <hr> </cfoutput> </body> </html>
<cfpop server="mail.company.com"
username=#myusername#
password=#mypassword#
Note: To avoid duplicate filenames when saving attachments, set the generateUniqueFilenames attribute of cfpop to Yes.
By default, retrieved messages remain on the POP mail server. If you want to delete retrieved messages, you must set the action attribute of the cfpop tag to Delete. You must also specify use the messagenumber attribute to specify the numbers of the messages to delete.
Using cfpop to delete a message permanently removes it from the server. If the messagenumber does not correspond to a message on the server, ColdFusion generates an error.
Note: Message numbers are reassigned at the end of every POP mail server communication that contains a delete action. For example, if you retrieve four messages from a POP mail server, the server returns the message numbers 1,2,3,4. If you delete messages 1 and 2 with a single cfpop tag, messages 3 and 4 are assigned message numbers 1 and 2, respectively.
<html> <head> <title>POP Mail Message Delete Example</title> </head> <body> <h2>This example deletes messages:</h2> <cfpop server="mail.company.com" username=#username# password=#password# action="Delete" messagenumber="1,2,3"> </body> </html>
<cfpop server="mail.company.com"
username=#username#
password=#password#
Caution: When you view this page in your web browser, ColdFusion immediately deletes the messages from the POP server.
The following figure shows the message list before the deletion of message 280:
The following figure shows the message list after the deletion of message number 280. ColdFusion reorders the remaining messages: