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 Quellcode
Private 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);
}
}
}
}
}
}


