Sending (SMS) Picture Messages With ColdFusion And CFMail

Posted June 25, 2007 at 7:20 AM

Tags: ColdFusion

A while back, I talked about sending text messages (SMS messages) to mobile phones using ColdFusion and CFMail. Well, walking down the street today, surrounding by young woman in scantily clad summer outfits, I wondered if the same could be done with picture messages (PIX Messages). At first, I tried to send a picture to my VText email address using ColdFusion's CFMailParam tag (sending the picture as an attachment). The message went through to my phone, but only as text message.

After some Googling, I found out that several phone carriers allow you to send email-based SMS picture messages, but these require different email addresses than the SMS text messages. For Verizon, my cellular carrier, text messages get send to NUMBER@vtext.com, but PIX messages need to be sent to NUMBER@vzwpix.com. Here are the SMS picture message emails for some of the more popular carriers:

AT&T Wireless

NUMBER@mmode.com

Cingular

NUMBER@mms.mycingular.com

Sprint

NUMBER@pm.sprint.com

T-Mobile

NUMBER@tmomail.net

Verizon

NUMBER@vzwpix.com

Equip with this new knowledge, sending the PIX message was quite easy:

 Launch code in new window » Download code as text file »

  • <!---
  • Send the pix message. This will send the text
  • message in the CFMailPart in addition to the image.
  • --->
  • <cfmail
  • to="5555555555@vzwpix.com"
  • from="ben@xxxxxxxx.com"
  • subject="Have fun at CFUNITED!">
  •  
  • <!--- Send text message. --->
  • <cfmailpart type="text/plain">Have Fun!</cfmailpart>
  •  
  • <!--- Send image as attachment. --->
  • <cfmailparam
  • file="#ExpandPath( './beach_girls_640_480_at_30.jpg' )#"
  • type="image/jpg"
  • />
  •  
  • </cfmail>

PIX messages can send both a picture and a text message at the same time. In the above code, notice that I am using the CFMailPart to sent the text message in addition to the CFMailParam tag to send the image as an attachment. I, of course, can only test this on Verizon Wireless, but I assume the technology is pretty uniform across the different carriers.

If you look at the image that I am attaching, you might have noticed that it contains "640_480" and ends with "at_30". The first part is the image dimensions that I am using. My LG Verizon cell phone can handle image dimensions up to 640 x 480 pixels. To maximize the image quality, I am going to use the largest dimensions possible. The ending part of the file name, "at_30", is the JPEG compression that I was using. Compression is a funny thing when it comes to cell phones; it's counterintuitive. Normally, a 30 compression is horrible! Look at the beach girls image at quality-30 compression at normal size:


 
 
 

 
 Beach Girls At 30 Quality Compression  
 
 
 

As you can see, this compression has taken something beautiful and made it ugly. Your gut tells you to use something more standard, like a quality-80 compression:


 
 
 

 
 Beach Girls At 80 Quality Compression  
 
 
 

Clearly, a much nicer and more satisfying image. But, what we forget is that most cell phones (unless you have one of those really nice ones) have crap resolutions; image quality is really poor no matter what. In fact, when I send a 30 and an 80 quality compression image to my cell phone, they look exactly the same. The only difference becomes file size. The 30-quality image above is 12 Kb. The 80-quality image is a whopping 53 Kb. And, since most cell phones have limited storage capacity, you are going to want to optimize file size as much as possible.

Just a final note, PIX messages are much more expensive than text messages (not for any sort of technology reasons - just cause they say so), so don't go crazy emailing images to people.

Download Code Snippet ZIP File

Post Comment  |  Ask Ben  |  Other Searches  |  Print Page




Learning ColdFusion 9 - ColdFusion 9 tutorials, samples, examples, demos

Reader Comments

Jun 25, 2007 at 10:10 AM // reply »
1 Comments

Me and my girlfriends are never going to the beach with again. How dare you post our pic on the web. BTW, we really had a good time especially back at the bungalow.


Dec 3, 2007 at 3:50 PM // reply »
1 Comments

So I tryed number@vzwpix.com and it doesn't work anymore.


Dec 3, 2007 at 3:54 PM // reply »
7,539 Comments

That's lame. Stupid cellular carriers with their restrictions. Why can't they just let us use their service, no hassles.


nad
Mar 3, 2009 at 7:07 AM // reply »
1 Comments

sweet


Sep 10, 2009 at 1:30 PM // reply »
1 Comments

the number@vzwpix.com does work


Sep 12, 2009 at 10:09 PM // reply »
7,539 Comments

@Josh,

It's possible that the number has been changed; it's also possible that is being blocked however you are trying to do it.


sun
Mar 13, 2010 at 6:16 PM // reply »
2 Comments

@tmomail.net is NOT correct! IS t-mobile addy ... but, ONLY for a txt msg!


sun
Mar 13, 2010 at 6:21 PM // reply »
2 Comments

MY BAD! @tmomail.net IS correct ... but, ONLY from pic taken W/ a cell -- NOT as attachment in an email ... (took ~4 min. for it to arrive ... then would NOT DL to my cell)


Mar 15, 2010 at 9:45 AM // reply »
7,539 Comments

@Sun,

Thanks for the update. I've only ever had Verizon / AT&T, so my testing is rather limited.


Post Comment  |  Ask Ben

Recent Blog Comments
Mar 19, 2010 at 2:29 AM
URL Rewriting And ColdFusion's WriteToBrowser Image Functionality (CFFileServlet)
Pakistan Travel information for attractions in Pakistan, Balochistan, Sindh, NWFP and Punjab. Gilgit-Baltistan guide, history and culture. ... read »
Mar 19, 2010 at 1:43 AM
jQuery Attr() Function Doesn't Work With IMAGE.complete
sample: ..... var loadWatch = setInterval(function() { if(img.complete) { clearInterval(loadWatch); completeCallback(img); } }, 100); } else .... ... read »
Mar 19, 2010 at 12:50 AM
jQuery Attr() Function Doesn't Work With IMAGE.complete
I just fixed the code. There was a function "watch" inside the function imgLoad. It spammed a lot of errors: Error: missing argument 1 when calling function watch. To fix this: instead of setInt ... read »
Mar 18, 2010 at 10:28 PM
Posting XML SOAP Requests With jQuery
can you please point me to the jquery documentation on the following # // Create our SOAP body content based off of # // the template. # var soapBody = soapTemplate.html().replace( # new RegExp( "\\ ... read »
Mar 18, 2010 at 6:34 PM
Exploring ColdFusion Component Runtime Class Properties And Serialization
@Ben Very useful analyses. Thank you @Elliot Thanks for additional clarification Though, it's quite a shame that getBust() failed...not defined ;) ... read »
Mar 18, 2010 at 5:35 PM
Exploring ColdFusion Component Runtime Class Properties And Serialization
Saving private properties is necessary so that you can "reconstitute" an object on the other side of the wire, or load up a serialized object you saved to disk. If it didn't save the private state o ... read »
Mar 18, 2010 at 4:04 PM
jQuery's Event Triggering, Order Of Default Behavior, And triggerHandler()
Tks! You saved-me today. it can be chained into one statement: $("#x).attr("checked","checked").triggerHandler('click'); ... read »
Mar 18, 2010 at 1:18 PM
Finally Finished Ayn Rand's Atlas Shrugged Audio Book
@joaopft, Not disputing what you say - but... If I understand you correctly, you are saying that Positivism is based on sense experience (what I experience is what is), but Quantum theory states tha ... read »