OVH Community, your new community space.

Mailingliste erstellen via API/PHP


tomwinter
28.08.15, 13:02
Hallo Lorenzo,

was soll ich sagen, du hast mir das Wochenende gerettet! Es klappt wunderbar.. Vielen Dank!

Das mit dem json_encode und dem header hatte ich sogar probiert, allerdings nur einen Signaturfehler bekommen. Das mit dem bodyfeld... Da wäre ich vermutlich nie drauf gekommen..
Wie dem auch sei, nochmal vielen Dank für deine Antowort. Du hast mir sehr geholfen

Schönes Wochenende
Tom

Lorenzo
28.08.15, 07:49
Hallo Tom,

Ich hatte das gleiche Problem und habe eine Antwort im französischen OVH Forum bekommen die ganz gut klappt.

Den „Fehler“ den wir beide gemacht haben ist der, dass wir die Post_Data in json umwandeln mussten und den Header um 'Content-Type:application/json' erweitern mussten. Dies hat jedoch zur Folge dass wir die Body Komponente der Signature ebenfalls durch die Post_Data ersetzen müssen damit es klappt.

PHP-Code:
function ovhApiCreateMailinglist $name $ownerEmail $moderatorMessage$subscribeByModerator$usersPostOnly$replyTo ) {

    
$url "https://eu.api.ovh.com/1.0/email/domain/{mon-domaine.fr}/mailingList";
    
$method "POST";
    
$body = array (
        
'language' => 'fr',
        
'name' => $name,
        
'options' => array (
            
'subscribeByModerator' => $subscribeByModerator,
            
'usersPostOnly' => $usersPostOnly,
            
'moderatorMessage' => $moderatorMessage
        
),
        
'ownerEmail' => $ownerEmail,
        
'replyTo' => $replyTo
    
);
    
$body json_encode($body);
    
$ovhTime ovhApiGetTime();
    
$toSign =  OVH_APP_SECRET '+' OVH_USER_KEY '+' $method '+' $url '+' $body '+' $ovhTime;
    
$hash '$1$' sha1$toSign );
    
    if ( ( 
$name == "" ) OR ( $ownerEmail == "" ) ) {
        exit();
    }

    
$curl curl_init();

    
$headers = array();
        
$headers[] = 'X-Ovh-Application:' OVH_APP_KEY;
        
$headers[] = 'X-Ovh-Timestamp:' $ovhTime;
        
$headers[] = 'X-Ovh-Signature:' $hash;
        
$headers[] = 'X-Ovh-Consumer:' OVH_USER_KEY;
        
$headers[] = 'Content-Type:application/json',

    
curl_setopt_array($curl, array(
        
CURLOPT_RETURNTRANSFER => 1,
        
CURLOPT_URL => $url,
        
CURLOPT_CUSTOMREQUEST => "POST",
        
CURLOPT_HTTPHEADER => $headers,
        
CURLOPT_POST => 1,
        
CURLOPT_POSTFIELDS => $body 
        
));

    
$result curl_exec$curl );
    
$result json_decode$resulttrue );
    
curl_close$curl );

    return 
$result;

Diese Methode klappt übrigens auch für die anderen POSTs wie E-Mail-Adresse hinzufügen. Ich habe noch nicht alles durchgetestet doch ich glaube nicht dass wir noch weitere Probleme haben werden.

MfG

Lorenzo

tomwinter
19.08.15, 15:18
Ich bin mit dem Problem leider immer noch nicht weiter gekommen... Hat wirklich keiner eine Idee?

tomwinter
17.08.15, 12:19
Guten Tag,

ich versuche gerade mittels der OVH API eine neue Mailingliste zu erstellen. Dazu nutze ich folgende Funktion:

PHP-Code:
function ovhApiCreateMailinglist $name $ownerEmail $moderatorMessage$subscribeByModerator$usersPostOnly$replyTo ) {
    
    
$url "https://eu.api.ovh.com/1.0/email/domain/{meine-domain.de}/mailingList";
    
$method "POST";
    
$body "";
    
    
$ovhTime ovhApiGetTime();
    
    
$toSign =  OVH_APP_SECRET '+' OVH_USER_KEY '+' $method '+' $url '+' $body '+' $ovhTime;
 
    
$hash '$1$' sha1$toSign );
    
    if ( ( 
$name == "" ) OR ( $ownerEmail == "" ) ) {
        
        exit();
        
    }
    

    
$curl curl_init();

    
$postData = array (
        
'language' => 'de',
        
'name' => $name,
        
'options' => array (
            
'subscribeByModerator' => $subscribeByModerator,
            
'usersPostOnly' => $usersPostOnly,
            
'moderatorMessage' => $moderatorMessage
          
),
        
'ownerEmail' => $ownerEmail,
        
'replyTo' => $replyTo
    
);
        
    
    
$headers = array();
    
$headers[] = 'X-Ovh-Application:' OVH_APP_KEY;
    
$headers[] = 'X-Ovh-Timestamp:' $ovhTime;
    
$headers[] = 'X-Ovh-Signature:' $hash;
    
$headers[] = 'X-Ovh-Consumer:' OVH_USER_KEY;

    
curl_setopt_array($curl, array(
        
CURLOPT_RETURNTRANSFER => 1,
        
CURLOPT_URL => $url,
        
CURLOPT_CUSTOMREQUEST => "POST",
        
CURLOPT_HTTPHEADER => $headers,
        
CURLOPT_POST => 1,
        
CURLOPT_POSTFIELDS => $postData 
    
));
        
    
$result curl_exec$curl );
    
    
$result json_decode$resulttrue );
    
curl_close$curl );
    
    return 
$result;
    

Ich erhalte allerdings immer folgenden Fehler:

Code:
Array ( [message] => [options] DomainMlOptionsStruct Data is not a hash for a complex type )
Leider kann ich mit dieser Meldung nichts anfangen, auch Google hat mir nicht geholfen. Kennt jemand eine Lösung oder kann mir erklären was ein "DomainMlOptionsStruct" ist?

Ich freue mich über jede Antwort

Liebe Grüße
Tom