Handbuch Versendung von SMS per URL Aufruf über http oder https-Request
- Parameter für Text-SMS
- Statuscodes
- Sendeberichte empfangen
- Antworten empfangen
- Guthabenabfrage
- Programmier-Beispiele
- Beispiel SMS mit PHP versenden
- Beispiel SMS mit Perl versenden
- Beispiel SMS mit ASP versenden
- Beispiel SMS mit JSP (Java Server Pages) versenden
- Beispiel SMS mit JAVA versenden
- Beispiel SMS mit .NET versenden
- Beispiel SMS mit C# versenden
- Beispiel SMS mit C++ versenden
- Beispiel SMS mit Visual Basic / VBA versenden
- Beispiel SMS mit Delphi versenden
- Beispiele SMS mit Kommandozeile versenden
Sie können über die Eingabe einer Adresse in Ihrem Browser, bzw. über einen automatischen Aufruf der Adresse
http://www.sms4.de/cgi-bin/sms_out.plmit den folgenden Parametern eine SMS versenden:
1.) Parameter für Text-SMS
Parameter | Beispiel | Beschreibung |
---|---|---|
handynr (Pflicht) | handynr=491743333333 | Die Zielnummer. Bitte immer mit Ländercode ohne + oder führende Nullen. |
user (Pflicht) | user=XYZ | Ihr SMS4.de Benutzername. |
pwd (Pflicht) | pwd=XYZ | Das Passwort Ihres Benutzers. |
kdnr (Pflicht) | kdnr=XY12345 | Ihre SMS4.de Kundennummer hier kostenlos beantragen |
text (Pflicht) | text=hier+k%F6nnte+der+Text+stehen | Der Text der SMS, 160 Zeichen (ISO-8859-15). |
tarif (optional) | tarif=1 | Bei Tarif ist 1 oder 7 möglich. Details zu den SMS Tarifen finden Sie in der SMS-Preisliste (Der Vorgabewert ist 1). |
absender (optional) | absender=Der-Peter oder: absender=%20%2B49174210000 oder: absender=0049174210000 |
Die Absenderkennnung nur für Tarif 1 und 7: 6 bis 11 Zeichen Text (keine Sonderzeichen) oder 6 bis 14 Ziffern, bei SMS ins Festnetz sind nur Ziffern erlaubt (Den Vorgabewert können Sie in den Einstellungen angeben). Ein + für zu Beginn der Absenderkennung wird als %20%2B URL-codiert. Sie könne auch 0049.... verwenden. |
sendezeit (optional) | sendezeit=20240501354 | Hier im Beispiel: SMS Versenden am 01.05.2024 um 13:54 Uhr. Das Format ist JJJJMMDDHHMM. Also Jahr Monat Tag Stunde Minute ohne Leerzeichen, mit führenden Nullen bei Werten <10 und ohne Sekunden. 24 h Format. |
v (optional) | v=1 | Bei v=1 liefert der URL-Aufruf zusätzlich eine eindeutige SMS-Id zurück. Diese Id können Sie z.B. für Nachfragen verwenden (analog der Id in den CSV-Logfiles). |
guthaben (optional) | guthaben=1 | Bei guthaben=1 liefert der URL-Aufruf zusätzlich das aktuelle Restguthaben in Euro (nur für Prepaidkunden) nach Versand der SMS zurück. |
replyto (optional) | replyto=an@1andere.de | Antworten (Tarif 7) und Sendeberichte (Tarif 1 u. 7) werden nicht an die E-Mail des Benutzers, sondern an die angegebene REPLYTO E-Mail-Adresse gesendet. |
test (optional) | test=1 | test=1 aktiviert den Testmodus. SMS werden nicht versendet und nicht berechnet. |
Bitte Benutzername, Passwort und Kundennummer mit Ihren Daten ersetzen.
Falls Sie noch keine Zugangsdaten haben, bekommen Sie diese hier.
Beispiel-Aufruf Text-SMS (GET)
Der HTTP-Aufruf muss URL-encoded sein,
also kein Ä sondern %C4 etc.
Eine vollständige Übersicht gibt es hier: urlencode-chart.
Normalerweise werden die Texte unter PHP und Perl mit entsprechenden Funktionsaufrufen
automatisch codiert (urlencode).
Die URL rufen Sie in PHP mit fopen() auf, in Perl mit HTTP::Request (siehe Beispiele).
Die Parameter können per GET oder POST übertragen werden.
Statuscodes
Der Aufruf der URL liefert im Erfolgsfall zurück:
<smsout> <status>0</status> <statustext>SMS erfolgreich versendet</statustext> </smsout>oder im erweiterten Format mit v=1:
<smsout> <status>0</status> <statustext>SMS erfolgreich versendet</statustext> <smsid>123456789</smsid> </smsout>oder mit Anzeige des Restguthabens guthaben=1:
<smsout> <status>0</status> <statustext>SMS erfolgreich versendet</statustext> <guthaben>23.35</guthaben> </smsout>Definierte Statuscodes derzeit:
0 = SMS erfolgreich versendet 10 = Falsche Authentifizierung, Ungueltige Kombination User/Passwort/Kundennummer 11 = Falsche Authentifizierung, User fehlt 12 = Falsche Authentifizierung, Passwort fehlt 13 = Falsche Authentifizierung, Kundennr fehlt 20 = Handynummer fehlt 21 = Ungueltige Handynr 22 = Handynummer zu kurz 23 = Handynummer zu lang 25 = SMS Text fehlt 30 = Ungueltiger Tarif 31 = Ungueltige Kombination Tarif/Handynummer 40 = Test SMS aufgebraucht 41 = Guthaben aufgebraucht 42 = Monatslimit erreicht 51 = Ungueltige Absenderkennung 52 = Absenderkennung zu kurz 99 = Stoerung beim SMSCLesen Sie auch in unseren FAQ: Wie kann ich den Statuscode der HTTP-Schnittstelle verarbeiten?
4.) Sendeberichte empfangen
Pull: Siehe unter Handbuch Sendeberichte über HTTP Pullen
Push: Siehe unter Handbuch Sendeberichte über HTTP Pushen
5.) Antworten empfangen
Siehe unter Handbuch Antworten über HTTP Push
6.) Guthabenabfrage
Siehe unter Handbuch Guthabenabfrage über http oder https-Request
7.) Programmier-Beispiele
Beispielcode für PHP:
<?php /* ================================================ Beispielcode für den Versand von SMS über URL-Aufruf von www.sms4.de ===================================================*/ $kdnr = "XY12345"; // Bitte mit Ihrer Kundennr ersetzen $pw = "8899"; // Bitte mit Ihrem Passwort ersetzen $user = "Andre"; // Bitte mit Ihrem Usernamen ersetzen // Ihre Absenderkennung ( 6 bis 11 Zeichen Text oder 6 bis 14 Ziffern ) $absender="017488997766"; // Handynummer inklusive Landesvorwahl und Netz $handynr = "491741234567"; $text = "Das ist ein Test mit PHP"; // Text der SMS $tarif = 1; // mit Absenderkennung und Sendeberichten, direkte Terminierung im SMSC // URL zusammenbauen $url = "http://www.sms4.de/cgi-bin/sms_out.pl?" . "handynr=" . UrlEncode($handynr) . "&user=" . UrlEncode($user) . "&pwd=" . UrlEncode($pw) . "&kdnr=" . UrlEncode($kdnr) . "&text=" . UrlEncode($text) . "&tarif=" . UrlEncode($tarif) . "&absender=" . UrlEncode($absender) ; // echo $url; /* Aufrufen der URL */ $message=""; if ( ($f = @fopen($url, "r"))) { $max_zeichen=256; $daten = fgets($f, $max_zeichen); while ($daten) { $message.= $daten; $daten = fgets($f, $max_zeichen); } } else { echo "Fehler: URL $url konnte nicht geoeffnet werden."; /* Wenn Sie Dateien nicht mit fopen() öffnen können, sollten Sie Ihre Server-Konfiguration überprüfen. Die Option allow_url_fopen in der php.ini muss auf TRUE gesetzt sein. Wichtige Hinweise zu fopen siehe http://www.php.net/manual/de/wrappers.http.php */ } echo $message; ?>
Beispielcode für Perl:
#!/usr/bin/perl ############################################################# # Beispielcode für den Versand von SMS über einen POST-Request # von www.sms4.de ############################################################# # Standard-CGI-Routinen laden use CGI; $kdnr= 'XY12345';# Bitte mit Ihrer Kundennr ersetzen $pw= '8899';# Bitte mit Ihrem Passwort ersetzen $user = 'Andre';# Bitte mit Ihrem Usernamen ersetzen # Ihre Absenderkennung ( 6 bis 11 Zeichen Text oder 6 bis 14 Ziffern ) $absender = 'Der Peter'; # Handynummer inklusive Landesvorwahl und Netz $handynr = "491741234567"; $tarif = 1; # mit Absenderkennung und Sendeberichten, direkte Terminierung im SMSC $text = 'Das ist ein Test mit Perl'; # Text der SMS # Aufrufen der URL via POST use HTTP::Request::Common; use LWP::UserAgent; $ua = new LWP::UserAgent; $res = $ua->request( POST 'http://www.sms4.de/cgi-bin/sms_out.pl', [ handynr => $handynr, user => $user, pwd => $pw, kdnr => $kdnr, text => $text, tarif => $tarif, absender => $absender ] ); if ($res->is_error) { # HTTP error } my $output = new CGI; print $output->header(); # Meldung ausgeben if ($res->is_success) { print $res->content; } else { die $res->status_line; }
Beispielcode für ASP:
<%@LANGUAGE="VBScript"%> <% ' Beispielcode für den Versand von SMS über einen POST-Request ' von www.sms4.de Dim xmlobj, url Dim kdnr Dim pw Dim user Dim absender Dim handynr Dim tarif Dim text kdnr = "XY12345" 'Bitte mit Ihrer Kundennr ersetzen pw = "8899" 'Bitte mit Ihrem Passwort ersetzen user = "Andre" 'Bitte mit Ihrem Usernamen ersetzen 'Ihre Absenderkennung ( 6 bis 11 Zeichen Text oder 6 bis 14 Ziffern ) absender = "Der Peter" 'Handynummer inklusive Landesvorwahl und Netz handynr="491741234567" tarif = 1 'mit Absenderkennung und Sendeberichten, direkte Terminierung im SMSC text = "Das ist ein Test mit ASP" 'Text der SMS ' URL zusammenbauen url = "handynr=" & Server.URLEncode(handynr) url = url & "&user=" & Server.URLEncode(user) url = url & "&pwd=" & Server.URLEncode(pw) url = url & "&kdnr=" & Server.URLEncode(kdnr) url = url & "&text=" & Server.URLEncode(text) url = url & "&tarif=" & Server.URLEncode(tarif) url = url & "&absender=" & Server.URLEncode(absender) 'Aufrufen der URL via POST set xmlobj = Server.CreateObject("Msxml2.ServerXMLHTTP") ' set xmlobj = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") ' set xmlobj = Server.CreateObject("Microsoft.XMLHTTP") xmlobj.open "POST", "http://www.sms4.de/cgi-bin/sms_out.pl", false xmlobj.setRequestHeader "Content-type", "application/x-www-form-urlencoded" xmlobj.Send url 'Meldung ausgeben if (xmlobj.status <> 200 ) then ' HTTP error else Response.write(xmlobj.responseText) end if set xmlobj = nothing %>
Beispielcode für JSP:
<%@ page import="java.util.*" %> <%@ page import="java.net.*" %> <%@ page import="java.io.*" %> <% /* ======================================================== Beispielcode für den Versand von SMS über einen POST-Request von www.sms4.de ===========================================================*/ String kdnr = "XY12345"; // Bitte mit Ihrer Kundennr ersetzen String pw = "8899"; // Bitte mit Ihrem Passwort ersetzen String user = "Andre"; // Bitte mit Ihrem Usernamen ersetzen // Ihre Absenderkennung ( 6 bis 11 Zeichen Text oder 6 bis 14 Ziffern ) String absender = "Der Peter"; // Handynummer inklusive Landesvorwahl und Netz String handynr = "491741234567"; String tarif = "1"; // mit Absenderkennung und Sendeberichten, direkte Terminierung im SMSC String text = "Das ist ein Test mit JSP"; // Text der SMS // URL zusammenbauen String uri = "handynr=" + URLEncoder.encode(handynr); uri = uri + "&user=" + URLEncoder.encode(user); uri = uri + "&pwd=" + URLEncoder.encode(pw); uri = uri + "&kdnr=" + URLEncoder.encode(kdnr); uri = uri + "&text=" + URLEncoder.encode(text); uri = uri + "&tarif=" + URLEncoder.encode(tarif); uri = uri + "&absender=" + URLEncoder.encode(absender); // Aufrufen der URL via POST try { URL http = new URL("http://www.sms4.de/cgi-bin/sms_out.pl"); try { URLConnection connect = http.openConnection(); connect.setDoOutput(true); connect.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); PrintWriter output = new PrintWriter(connect.getOutputStream()); output.println(uri); output.close(); BufferedReader input = new BufferedReader(new InputStreamReader(connect.getInputStream())); String res = input.readLine(); input.close(); //Meldung ausgeben out.println(res); } catch (IOException ex) { //HTTP error out.println(ex); } } catch(MalformedURLException e) { out.println(e); } %>
Beispiel für JAVA 6
Download QuellcodeParameter: -a,--a Absenderkennung -d,--debug Debugmodus -h,--help Diese Hilfe anzeigen. -hnr,--handynummer Handynummer (Pflicht) -kdnr,--kundennummer Kundennummer (Pflicht) -pw,--passwort Passwort (Pflicht) -t,--tarif Tarif 1 oder 7 -txt,--text Text der SMS (Pflicht). -u,--user User (Pflicht) Beispielaufruf: java SMS4 -hnr=491743333333 -u=XYZ -pw=XYZ -kdnr=XY12345 -txt="Dies ist ein Text" -t=1
Beispiel für Visual C# 2008
Download QuellcodeParameter: -a,--a Absenderkennung -d,--d Debugmodus -h,--h Diese Hilfe anzeigen. -hnr,--hnr Handynummer (Pflicht) -kdnr,--kdnr Kundennummer (Pflicht) -pw,--pw Passwort (Pflicht) -t,--t Tarif 1 oder 7 -txt,--txt Text der SMS (Pflicht). -u,--u User (Pflicht) Beispielaufruf: SMS4 -hnr=491743333333 -u=XYZ -pw=XYZ -kdnr=XY12345 -txt="Dies ist ein Text" -t=1
Beispiel für Visual C++ 6.0
Download QuellcodeParameter: User Passwort Kundennr Handynr "Text" [Absender] [Tarif] Beispielaufruf: SMS4 XYZ XYZ XY12345 491743333333 "Dies ist ein Text" Peter 1
Beispiel für Visual Basic
Download QuellcodePrivate Sub CommandButton1_Click() Dim res ' Aufruf der SMS Sendefunktion: User, Passwort, Kundennr, Handynr, Text, Absender, Tarif res = SMS4("XYZ", "XYZ", "XY12345", "491743333333", "Dies ist ein Text", "Der Peter", 1) MsgBox res End Sub
Beispiele für Aufruf aus Kommandozeile
Aufruf Internet Explorer übernimmt die Proxy-Einstellungen, daher auch Versand aus Firmennetzen möglich:"C:\Program Files\Internet Explorer\iexplore.exe" -extoff -private "https://www.sms4.de/cgi-bin/sms_out.pl?handynr=49174123456&user=abc&pwd=123=kdnr=abca&text=Dies+ist+ein+Text&tarif=1&absender=ichbins"Fenster schliessen mit
taskkill /f /im iexplore.exemit Wget:
wget -q -O - "http://www.sms4.de/cgi-bin/sms_out.pl?handynr=491743333333&user=XYZ&pwd=XYZ&kdnr=XY12345&text=Dies+ist+ein+Text&tarif=1" oder per POST-Request: wget -q -O - --post-data "handynr=491743333333&user=XYZ&pwd=XYZ&kdnr=XY12345&text=Dies+ist+ein+Text&tarif=1" http://www.sms4.de/cgi-bin/sms_out.plmit Lynx:
lynx -source "http://www.sms4.de/cgi-bin/sms_out.pl?handynr=491743333333&user=XYZ&pwd=XYZ&kdnr=XY12345&text=Dies+ist+ein+Text&tarif=1"mit cURL:
curl "http://www.sms4.de/cgi-bin/sms_out.pl?handynr=491743333333&user=XYZ&pwd=XYZ&kdnr=XY12345&text=Dies+ist+ein+Text&tarif=1" oder per POST-Request und via SSL: curl -k --data-urlencode "handynr=491743333333" --data-urlencode "user=XYZ" --data-urlencode "pwd=XYZ" --data-urlencode "kdnr=XY12345" --data-urlencode "text=Dies ist ein Text via SSL" https://www.sms4.de/cgi-bin/sms_out.plmit .Net:
namespace HttpClientSample { class Program { static void Main(string[] args) { // GetRequest("someurl"); PostRequest("https://www.sms4.de/cgi-bin/sms_xml.pl"); Console.ReadKey(); } async static void PostRequest(string url) { string strxml = @"<httptosms> <user>xxx</user> <pwd>yyy</pwd> <custid>zzz</custid> <job> <msg>Test XML SMS4 .net.</msg> <tariff>1</tariff> <sender>MeinName</sender> <sms> <to>0174200000</to> </sms> </job> </httptosms> " ; Console.WriteLine(strxml); Console.WriteLine(); IEnumerable<KeyValuePair<string, string>> queries = new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("xml", strxml) }; HttpContent q = new FormUrlEncodedContent(queries); using (HttpClient client = new HttpClient()) { using (HttpResponseMessage response = await client.PostAsync(url,q)) { using (HttpContent content = response.Content) { String mycontent = await content.ReadAsStringAsync(); Console.WriteLine(mycontent); } } } } async static void GetRequest(string url) { using (HttpClient client = new HttpClient()) { using (HttpResponseMessage response = await client.GetAsync(url)) { using(HttpContent content = response.Content) { string mycontent = await content.ReadAsStringAsync(); Console.WriteLine(mycontent); } } } } } }