# Extern Email Konto anlegen.



## graf_rudolf (10. Nov. 2013)

Hallo liebe Community, 
_*Ich würde gerne meinen Benutzern ein E-mail Konto zu verfügung stellen. 
Ist es möglich das durch ein Formular auf meiner Webseite, ein E-Mail Konto angelegt wird? Sodass sich danach jeder der sich angemeldet hat im Webmail einloggen kann?

Danke;-)
*_


----------



## nowayback (11. Nov. 2013)

such hier mal nach remote api


----------



## graf_rudolf (11. Nov. 2013)

alles klar danke;-)
Leider klappt es bei mir mit der API noch nicht so ganz. 
Hier erstmal der Code meine .php Datei.

```
<?php
   
  $username = 'XXXX'; // API User
  $password = 'XXXX'; // API PW
   
  $myusername = 'test@meine-domain.de'; //Mail User
  $mypassword = 'test'; // Mail PW
   
  $soap_location = 'https://localhost:8080/remote/index.php'; //'http://localhost:8080/ispconfig3/remote/index.php'

  $soap_uri = 'https://localhost:8080/remote/'; // 'http://localhost:8080/ispconfig3/interface/web/remote/'
   
  $client = new SoapClient(null, array('location' => $soap_location,
   
  'uri'      => $soap_uri));
  try {
      //* Login to the remote server
      if($session_id = $client->login($username,$password)) {
          echo 'Logged into remote server
  sucessfully. The SessionID is '.$session_id.'
  ';
   echo 'Logged into remote server sucessfully. The SessionID is '.$session_id.'
  ';
   
  $domain_id = 1;
   
  $client_id = 1;
    $params = array(
            'server_id' => 1,
            'email' => '$myusername',
            'login' => ''$myusername',
            'password' => '$mypassword ',
            'name' => 'test',
            'uid' => 5000,
            'gid' => 5000,
            'maildir' => '/var/vmail/meine-domain.de/',
            'quota' => 0,
            'cc' => '',
            'homedir' => '/var/vmail/',
            'autoresponder' => 'n',
            'autoresponder_start_date' => '',
            'autoresponder_end_date' => '',
            'autoresponder_text' => '',
            'move_junk' => 'n',
            'custom_mailfilter' => 'spam',
            'postfix' => 'y',
            'access' => y',
            'disableimap' => 'n',
            'disablepop3' => 'n',
            'disabledeliver' => 'n',
            'disablesmtp' => 'n'
            );
    
    $affected_rows = $client->mail_user_add($session_id, $client_id, $params);

    echo "New user: ".$affected_rows."<br>";
    
    if($client->logout($session_id)) {
        echo 'Logged out.<br />';
    }
    
    
} catch (SoapFault $e) {
    echo $client->__getLastResponse();
    die('SOAP Error: '.$e->getMessage());
}

?>
```
Wenn ich die Datei jetzt aufrufe kommt leider nur eine Weiße Seite, und es wird kein E-Mail User angelegt. 

Was mach ich falsch?


----------



## Till (11. Nov. 2013)

Dann schau mal in das apache error.log der webseite.


----------



## graf_rudolf (11. Nov. 2013)

```
[Mon Nov 11 17:13:54 2013] [warn] [client 95.91.229.XX] mod_fcgid: stderr: PHP Parse error:  syntax error, unexpected '$myusername' (T_VARIABLE), expecting ')' in /var/www/clients/client1/web1/web/mail/useradd/test.php on line 31
```
Das ist der Error Log

in Zeile 31 Steht:

```
$client_id = 1;
```


----------



## Till (11. Nov. 2013)

Schau mal in die zeile:

'login' => ''$myusername',

da sind 2 einfache anführungszeichen. Außerdem kannst Du keine variablen wie $myusername innerhalb von einfachen anführungszeichen in php verwenden. Am Besten lässt Du die Anführungszeichen um die variablen weg, oder erstzt sie durch doppelte " anführungszeichen.


----------



## graf_rudolf (11. Nov. 2013)

So vielen Dank erstmal, hab noch bisschen dran rumgespielt und jetzt legt er zumindest schonmal die User an so wie ich das möchte.

Ich bastel nochmal bisschen weiter dran rum;-)

Als nächsten Schritt will ich jetzt ein Forumlar bauen der
$myusername = "xxx"; 
$mypassword = "xxx";
mit Werten füttert.


Hier ist die PHP so wie sie grade bei mir funktioniert. 
Wenn ihr noch verbesserungsvorschläge habt immer her damit.




```
<?php
   
  $username = "xxx"; // API User
  $password = "xxx"; // API PW
   
  $myusername = "xxx"; //Mail User
  $mypassword = "xxx"; // Mail PW
   
  $soap_location = 'https://localhost:8080/remote/index.php'; //'http://localhost:8080/ispconfig3/remote/index.php'

  $soap_uri = 'https://localhost:8080/remote/'; // 'http://localhost:8080/remote/'
   
  $client = new SoapClient(null, array('location' => $soap_location,
   
  'uri'      => $soap_uri));
  try {
      //* Login to the remote server
      if($session_id = $client->login($username,$password)) {
          echo 'Logged into remote server
  sucessfully. The SessionID is '.$session_id.'
  ';
   echo 'Logged into remote server sucessfully. The SessionID is :'.$session_id.'<br />';
    }
    $params = array(
            'server_id' => 1,
            'email' => "$myusername",
            'login' => "$myusername",
            'password' => "$mypassword",
            'name' => 'test',
            'uid' => 5000,
            'gid' => 5000,
            'maildir' => '/var/vmail/xxx.de/',
            'quota' => 10000000000,
            'cc' => '',
            'homedir' => '/var/vmail/',
            'autoresponder' => 'n',
            'autoresponder_start_date' => '',
            'autoresponder_end_date' => '',
            'autoresponder_text' => '',
            'move_junk' => 'n',
            'custom_mailfilter' => 'spam',
            'postfix' => 'y',
            'access' => 'y',
            'disableimap' => 'n',
            'disablepop3' => 'n',
            'disabledeliver' => 'n',
            'disablesmtp' => 'n'
            );
    
    $affected_rows = $client->mail_user_add($session_id, $client_id, $params);

    echo "New user: ".$affected_rows."<br>";
    
    if($client->logout($session_id)) {
        echo 'Logged out.<br />';
    }
    
    
} catch (SoapFault $e) {
    echo $client->__getLastResponse();
    die('SOAP Error: '.$e->getMessage());
}

?>
```


----------



## graf_rudolf (11. Nov. 2013)

Bzw wenn noch jemand Tipps hat, wie ich das Formular am besten erstelle
bin ich auch immer für Tipps dankbar.

schönen Abend;-)


----------



## graf_rudolf (15. Nov. 2013)

Nabend,
der Aktuelle Stand:
Es ist jetzt möglich über ein Formular (Name, Mail Adresse, Passwort)
eine E-Mail aresse zu erstellen.
Das Problem ist jetzt das sich Teilweise mehrere Benutzer ein Postfach teilen.
Das sieht man z.B dadran, dass 5 User angelegt werden, und alle 5 User auch von den anderen die ISPconfig Willkommens Nachricht im Passwort haben.

Danke für eure Hilfe.

mfg


----------



## graf_rudolf (16. Nov. 2013)

Gibt es auch noch eine Möglichkeit mit der API abzufragen welche E-Mail adressen noch frei sind? oder gibt es da andere Lösung für?


----------



## Till (17. Nov. 2013)

Ja, die gibt es. z.B.:


```
$email = 'test@domain.de';
$mailuser = $client->mail_user_get($session_id, array('email' => $email));
if(is_array($mailuser)) {
  echo 'Email gibt es noch nicht';
}
```


----------



## graf_rudolf (30. Nov. 2013)

Ich hab nochmal ein Problem.

In ISP Config werden die E-mail Adressen jetzt ja ohne Probleme angelegt.

Aber es wird im Ordner /var/vmail/xxx.de nicht für jeden Benutzer ein neuer Ordner angelegt.

Jetzt kann ich mehrer Benutzer anlegen aber alle haben den gleichen Posteingang.

Was mach ich falsch?

schönes Wochenende;-)


----------



## Till (2. Dez. 2013)

Schau mal in Deinem Code nach und stell sicher dass Du für jeden neu angelegten User auch ein anderes maildir im $params Array angibst.


----------



## ww1com (18. Apr. 2016)

Zitat von Till:


> Ja, die gibt es. z.B.:
> 
> 
> ```
> ...



Hay Danke das hat mir noch gefehlt. Vielen Dank an denn
*Till Administrator*

*Jetzt habe ich mal eine Frage unter ispconfig 3 remote User_mail_add.php*
*die beide Verzeichnisse *
*homedir und  maildir sind das unterschiedliche verzeicnisse*


----------



## ww1com (20. Apr. 2016)

Zitat von ww1com:


> Hay Danke das hat mir noch gefehlt. Vielen Dank an denn
> *Till Administrator*





Zitat von ww1com:


> Hay Danke das hat mir noch gefehlt. Vielen Dank an denn
> *Till Administrator*
> 
> *Jetzt habe ich mal eine Frage unter ispconfig 3 remote User_mail_add.php*
> ...


Leider finde ich nichts im Netz Wer kann Helfen 
maildir' => '/var/vmail/$Domain/$name',
was muss ich machen oder ändern . Danke


----------



## Till (20. Apr. 2016)

Lege eine mailbox in ispconfig an, dann schau in die mail_user tabelle dann weißt Du wie alle api parameter gefüllt werden müssen alles ausßer den $sys_* spalten der DB übergibst Du im $params array.


----------



## ww1com (20. Apr. 2016)

Zitat von Till:


> Lege eine mailbox in ispconfig an, dann schau in die mail_user tabelle dann weißt Du wie alle api parameter gefüllt werden müssen alles ausßer den $sys_* spalten der DB übergibst Du im $params array.


das von ispconfig 3 /var/vmail/ww1net.de/admin
und das von mir /var/vmail/"$domain"/"$name"


----------



## ww1com (21. Apr. 2016)

ich weiss nicht was ich falsch mache..
Nu jetzt gehe ich erstmal die Sonne genießen
// Template für ispconfig 3 Mail server hosting.ww1net.de
require 'soap_config.php';

$exemail="xxxxx@ww1net.de";
$exlogin="xxxxx@ww1net.de";
$expw="xxxxxx";
$exname="xxxxxx";
// '/var/vmail/ww1net.de/joerg',
$Var1="/var/vmail/";
$domain="ww1net.de/";

$var = var1 . $domain . $exname;
$client = new SoapClient(null, array('location' => $soap_location,
     'uri'  => $soap_uri,
     'trace' => 1,
     'exceptions' => 1));


try {
   if($session_id = $client->login($username, $password)) {
     echo 'Logged successfull. Session ID:'.$session_id.'<br />';
   }

   //* Set the function parameters.
   $client_id = 1;
   $params = array(
     'server_id' => 2,
     'email' => $exemail,
     'login' => $exlogin,
     'password' => $expw,
     'name' => $exname,
     'uid' => 5000,
     'gid' => 5000,
     'maildir' => $var,
     'quota' => 5242880,
     'cc' => '',
     'homedir' => '/var/vmail',


----------

