This guide will tell you how to get MMS on an iPhone 3G or 3GS running 3.0 or 3.01 still.
THIS WILL GET YOU THE OFFICIAL AT&T 5.5 CARRIER FILE ON YOUR PHONE WITHOUT UPDATING TO 3.1 LIKE APPLE/AT&T WANT YOU TO DO!
Also please note, if you want to do this on an an original iPhone (2G), please see my previous post on that subject.
There are many reasons for this… actually like two.
You can’t upgrade because of Exchange and encryption issues.
You have a jailbroken iPhone 3G/3GS, and don’t want to upgrade to 3.1 yet (and ruin your jailbreak)
So to begin, first thing is first:
1. Be sure you close iTunes
2.
MAC OS X:
Close iTunes.
Open Terminal (Applications > Utilities > Terminal).
Run the command:
defaults write com.apple.iTunes carrier-testing -bool TRUE

Windows 32 Bit:
Close iTunes.
Go to Start then Run and type CMD.
Run this command:
"C:Program FilesiTunesiTunes.exe" /setPrefInt carrier-testing 1

Windows 64 Bit:
Close iTunes.
Go to Start then Run and type CMD.
Run this command:
"C:Program Files (x86)iTunesiTunes.exe" /setPrefInt carrier-testing 1
3. After you accomplish that, you will need to download this Official AT&T 5.5 Carrier File. I’d have recommend you save it to your desktop.
4. Open iTunes up, and plug in your iPhone, say NO to updating to 3.1 firmware.
5. Click your iPhone in the left sidebar, and then:
(Mac) Option+Left Click the “Update” button.
(Win) Shift+Left Click the “Update” button.
6. After that, you’ll see a window show up where you need to select the type of file before it lets you choose it.

7. After that, pick the AT&T_US.ipcc file, and choose Open.
8. Nothing will really happen to notify you that it worked, after you’re done though, unplug your phone
9. Reboot your phone.
10. Go into Settings, and then General, then About, your carrier should show your carrier as AT&T 5.5.

11. If all is well so far, then you should be able to start sending/receiving MMS messages.
12. Enjoy, and post any questions/comments/concerns in the comments section, and direct your friends to this post as well.