#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2003
    Posts
    24
    Rep Power
    0

    Customising cfm mail messages


    A simple question (I am hoping). Currently I am in the process of setting up a mailout form for my boss to send surveys, and he wants the ability to be able to specify several email addresses along with their corresponding name. So, in the form I have up to 5 input fields for the name, and another 5 for the appropriate email field. The fields are all matched accordingly - i.e. name1, email1, name2, email2 and so on (this is where my boss is to type the information). Initially I used a simple cfif to check to see the fields were defined before sending 'en mass' so to speak.....

    <cfif IsDefined("form.email1") and isDefined("form.email2") and isDefined("form.email3")>
    <cfset mailtarget = "#email1# ; #email2# ; #email3#;">
    <cfelseif IsDefined("form.email1") and isDefined("form.email2")>
    <cfset mailtarget = "#email1# ; #email2# ;">
    <cfelse>
    <cfset mailtarget = "#email1#">
    </cfif>

    and then set mailtareget as the TO address.

    This works fine, but does not allow me to assign a name to each individual email. I also know this is not the *correct* methodology and would prefer to use cfloop, where I check to see if email 1 is defined, then fetch name 1 and only THEN send, before moving on to the next series in the loop, until there are no more emails defined and the process halts. I also need this to work even if my boss only enters, for instance, 2 email addresses.

    Any ideas? All help greatly appreciated.

    TIA
    adieu
    Mark
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Dec 2003
    Posts
    32
    Rep Power
    11
    Are you sending out 5 seperate e-mails or 1 e-mail to 5 recipients?

    Also - not sure what you mean by assigning a mail to each recipient.

    My kneejerk (assuming 5 different e-mails) is to suggest having the user enter names 1 at a time and storing the names to a database or a session variable (array)

    So your form would be a single name and e-mail, user clicks save, CF saves the info to an array, and forwards back to the entry form.

    Once you have the info saved in an array/database, you can CFLOOP or CFQUERY through the list and send them individually.

    Added advantage - no longer limited to 5 entries, boss can enter as many names as he likes.

    Actually not that much coding, if I'm hitting on the issues let me know and we can play with some examples...
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2003
    Posts
    24
    Rep Power
    0
    Thank you for your reply estekguy. During the process of messing around and investigating cfloop further, I managed to work out an acceptable solution. In short to answer your question, I wanted it to loop thru each email and send them one at a time (to customise). Here's what I've got.......

    <cfprocessingdirective suppressWhiteSpace = "Yes">
    <cfloop index="i" from="1" to="3">
    <cfif isDefined("form.name"&i) and isDefined("form.email"&i)>
    <cfset customer_name = '#evaluate("form.name"&i)#'>

    <CFMAIL
    TO="#evaluate("form.email"&i)#"
    SUBJECT="#subject#"
    FROM="myemail@cwc.co.nz">
    Dear #customer_name#,

    email content here

    </cfmail>
    </cfif>
    </cfloop>

    Seems to work for me!

IMN logo majestic logo threadwatch logo seochat tools logo