Handling POP mail

This section provides an example of each of the following uses of POP mail:

Retrieving only message headers

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:

To retrieve only the message header:

  1. Create a ColdFusion page with the following content:
    <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>
    
  2. Edit the following lines so that they refer to valid values for your POP mail server, username, and password:
    <cfpop server="mail.company.com"
      username=#myusername#
      password=#mypassword#
    
  3. Save the file as header_only.cfm in the myapps directory under your web_root and view it in your web browser:

    Results of viewing the file header_only.cfm.

    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 &lt; and &gt;.

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.

Retrieving a message

When you use the cfpop tag with action="GetAll", ColdFusion returns the same columns as with getheaderonly, plus two additional columns, body and header.

To retrieve an entire message:

  1. Create a ColdFusion page with the following content:
    <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>
    
  2. Edit the following lines so that they refer to valid values for your POP mail server, username, and password:
    <cfpop server="mail.company.com"
      username=#myusername#
      password=#mypassword#
    
  3. Save the file as header_body.cfm in the myapps directory under your web_root and view it in your web browser:

    Results of viewing the file header_body.cfm.

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.

Retrieving a message and its attachments

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:

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.

To retrieve all parts of a message, including attachments:

  1. Create a ColdFusion page with the following content:
    <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>
    
  2. Edit the following lines so that they refer to valid values for your POP mail server, username, and password:
    <cfpop server="mail.company.com"
      username=#myusername#
      password=#mypassword#
    
  3. Save the file as header_body_att.cfm in the myapps directory under your web_root and view it in your web browser:

    Results of viewing the file header_body_att.cfm.

Note:   To avoid duplicate filenames when saving attachments, set the generateUniqueFilenames attribute of cfpop to Yes.

Deleting messages

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.

To delete messages:

  1. Create a ColdFusion page with the following content:
    <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>
    
  2. Edit the following lines so that they refer to valid values for your POP mail server, username, and password:
    <cfpop server="mail.company.com"
      username=#username#
      password=#password#
    
  3. Save the file as message_delete.cfm in the myapps directory under your web_root and view the file in your web browser.

    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 message list before deleting message 280.

The following figure shows the message list after the deletion of message number 280. ColdFusion reorders the remaining messages:

The message list after deleting message 280.

Comments