Send MMS Message with C# .NET

A .NET C# example for sending MMS messages via NowSMS has been posted at the following link:

For a VB.NET version of this example, please see the related article Send MMS Message with VB.NET.

MMS examples for other environments (PHP, Java, command line) can be found at

As discussed in Sending MMS Messages with NowSMS, one of the easiest ways to interface with NowSMS for sending MMS messages is to use what we refer to as the Proprietary URL Submission interface.  This interface is the one used for sending messages via the forms in the built-in NowSMS web interface.  Sending an MMS message via this interface is a matter of using an HTTP POST to submit MMS content in the form using the MIME type “multipart/form-data”.  This technique is often referred to as “HTTP File Upload” and is associated with web pages that have a “Browse” button that allows files to be uploaded.

There’s a great C#.NET HTTP File Upload library at:

A direct link to download the library is here (only the UploadHelper component is needed):

In the event that this link does not work in the future, we have archived a copy of the library at the following link:


application/ k)



The following code example uses code from that library to send an MMS message:

(Note: This example can be downloaded at

// Set the following variables as appropriate for your system. 

// URL that points to NowSMS web interface 

Uri url = new Uri(""); 

// Valid username/password for account defined in NowSMS under "SMS Users". 

String username = "testuser"; 

String password = "testpass"; 

// Images & Files to be included in the message. 

// First parameter is filename and path. 

// Second parameter must be MMSFILE 

// Third parameter should be MIME type 

UploadFile[] files = new UploadFile[] 


new UploadFile("f:\\temp\\image1.png", "MMSFILE", "image/png"), 

new UploadFile("f:\\temp\\image2.jpg", "MMSFILE", "image/jpeg"), 


// Create additional form parameters for sending MMS 

NameValueCollection form = new NameValueCollection(); 

// "PhoneNumber" variable contains recipient phone number 

form["PhoneNumber"] = "9999999999"; 

// "MMSFROM" variable contains sender phone number or address

//  (Note: Ignored when sending via modem) 

form["MMSFROM"] = "9999999999"; 

// "MMSSUBJECT" variable contains subject line for message 

form["MMSSUBJECT"] = "test subject"; 

// "MMSTEXT" variable contains test to appear in message (optional) 

form["MMSTEXT"] = "This is a test message"; 

// Send the request to NowSMS, creating an HttpWebRequest and 

// then use HttpUploadHelper to send files in multipart/form-data format 

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 

var credCache = new CredentialCache(); 

credCache.Add(url, "Basic", new NetworkCredential(username, password)); 

req.Credentials = credCache; 

HttpWebResponse resp = HttpUploadHelper.Upload(req, files, form); 

// Read the HTTP response and echo to console 

using (Stream s = resp.GetResponseStream()) 

using (StreamReader sr = new StreamReader(s)) 


string response = sr.ReadToEnd(); 




Additional MMS options can be included using the form[“variablename”] = “value” syntax shown in the above example. The other options/variables are described in more detail in


System Requirements for using this script:

This script connects to a NowSMS server and posts a request to the NowSMS server to send a message.

If you do not have a NowSMS server installed, this script will not work.

NowSMS server software is installed on a Windows PC and to be able to send SMS or MMS messages, NowSMS also requires a GSM modem, Android phone, or SMS service provider connection.

Trial versions of the NowSMS software can be downloaded at

Either the Now SMS/MMS Gateway or NowSMS Lite can be used. NowSMS Lite can send SMS and MMS messages using a single GSM modem or Android phone as a modem connection. The full product supports multiple modems and/or service provider connections.

Before attempting to interface with NowSMS using scripts, you should verify that NowSMS is configured correctly and can send SMS messages using its built in web interface. For Android phone or GSM modem connections, there are quick start guides that can be found here:

Once you have verified that NowSMS is working on its own, it will be necessary to change IP addresses referenced in the script to point to your NowSMS server. Our sample scripts use an IP address of, which is a special loopback address for the current PC. If your script is running on a different system than the NowSMS server, change to a host name or IP address that is valid for your environment. It is also necessary to define an SMS user account on the NowSMS server with account credentials that match with the user account in the script.