How to Send MMS Picture Messages with Python

Post updated by Matt Makai on March 28, 2018. Originally posted on May 15, 2016.

Multimedia Message Service (MMS) picture and video messages are a common extension to the Short Message Service (SMS) system for sending text messages. Using a web application programming interface (API) with Python makes it easy to send MMS messages from a web application or script. In this short tutorial we'll learn how to add MMS sending capability to a new or existing Python application.

Tools We Need

Either Python 2 or 3 works for the code in this tutorial. Just make sure you have one of those two versions installed on your system by going to the terminal and typing python --version. The other dependencies for this tutorial include:

If you are unsure of how to get pip and virtualenv installed, take a look at the first few steps of the how to set up Python 3, Flask and Green Unicorn on Ubuntu 16.04 LTS guide.

Twilio Web API

Our simple Python example application will use the Twilio web API to send picture messages. Go to the Twilio website sign up for a free trial account. If you already have a Twilio account (and you should because it makes it easy to add almost any type of communications to applications!) then sign into your existing account.

In trial mode Twilio can send MMS to a validated phone number associated with the account. When you're ready to send MMS messages to any phone in any country then you will have to upgrade your account.

After signing up for a Twilio account, you will receive your own phone number that'll be used to send messages. That phone number can send outbound MMS messages without any configuration. It can also receive messages but that requires modifying the Request URL webhook in the phone number details screen.

Installing Our Dependency

We'll use the twilio helper library as a dependency for our Python code. The helper library can be installed via the pip command, which pulls the code from PyPI into our local virtualenv. In this tutorial we'll call our virtualenv pymms but you can name it whatever you want for your application.

We have to create the virtualenv before using it. In your terminal enter:

virtualenv pymms

If you need to install virtualenv take a look at the how to set up Python 3, Django and Green Unicorn on Ubuntu 16.04 LTS guide.

Activate the virtualenv with the source command.

source pymms/bin/activate

The command prompt will change to look like this after it is activated:

Now install the Twilio Python helper library. Make sure you install the version 6.0.0 or later current version because the syntax for this code changed a bit from earlier helper library versions before 6.0.0.

pip install twilio>=6.0.0

Once the helper library installs we can use it in our Python code.

Sending MMS From Python

Launch the the Python interpreter by executing the python command in your terminal. You can also create a new file named send_mms.py if you want to re-use the code after we give it a try.

We need to grab our account credentials from the Twilio Console to connect our Python code to our Twilio account. Go to the Twilio Console and copy the Account SID and Authentication Token into your Python code.

Enter the following code into the new Python file, or copy it from this GitHub repository that contains all blog code examples.

# import the Twilio client from the dependency we just installed
from twilio.rest import Client

# the following line needs your Twilio Account SID and Auth Token
client = Client("ACxxxxxxxxxxxxxx", "zzzzzzzzzzzzz")

# this is the URL to an image file we're going to send in the MMS
media = "https://raw.githubusercontent.com/mattmakai/fullstackpython.com/master/static/img/logos/f.png"

# change the "from_" number to your Twilio number and the "to" number
# to the phone number you signed up for Twilio with, or upgrade your
# account to send MMS to any phone number that MMS is available
client.api.account.messages.create(to="+19732644152",
                                   from_="+12023351278",
                                   body="MMS via Python? Nice!",
                                   media_url=media)

All the lines above that start with # are comments to give you some context for what each line is doing. After entering that code into the interpreter or running the Python script with python send_mms.py Twilio will send your MMS.

In a few seconds you should see a message appear on your phone - note that MMS can take a little longer because your phone has to download the image. I use an iPhone so here is what the message looked like when I received it:

That is everything need to send MMS to a phone. Pretty awesome result for a few lines of Python code, right? This code can be added to any Python program to send outbound MMS.

One final note: keep your Twilio Auth Token secret otherwise anyone who gets it will be able to send and receive messages through your account.

Questions? Contact me via Twitter @fullstackpython or @mattmakai. I'm also on GitHub with the username mattmakai.

See something wrong in this post? Fork this page's source on GitHub and submit a pull request.


Matt Makai 2012-2022