2.5.4. Versenden einer neuen E-Mail im Postausgang

In diesem Beispiel wird gezeigt, wie eine E-Mail im Postausgang des GREYHOUND Server erzeugt und versendet wird. Das Beispiel ähnelt weitgehend dem Beispiel Erzeugen einer neuen Telefonnotiz im Posteingang, da auch hier ein Element auf dem Server erzeugt wird.
index.php - Versenden einer E-Mail:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
require_once 'ghrpc/ghrpc.php';

$client = new GhRpcClient('localhost'80false'tester''test123'); // Client-Objekt
$client->setUniqueClientIdCookieName('ghrpcexample8'); // eindeutige Client-ID

$itemService rpc_itemslib::newRpcItems($client); // Dienst für Elemente

$email rpc_itemslib::newRpcDetailedItem(true); // Element erzeugen (Eigenschaften "leer" vorbefüllen)
$email->Kind rpc_itemslib::ikEmail// Element vom Typ "E-Mail"
$email->State rpc_itemslib::isNew// Status "neu"
$email->Flags GhRpcUtils::newSet(rpc_itemslib::ifUseHtmlrpc_itemslib::ifUnsent); // ungesendete E-Mail mit HTML Inhalt
$email->Priority rpc_itemslib::ipNormal// normale Priorität
$email->GroupRef 1// In Gruppe mit ID 1 ablegen

$email->Subject 'Bild der Verpackung'// Betreff
$email->From->Text 'Tanja Tester <tanja.tester@mailinator.com>'// Absender

$recipient rpc_itemslib::newRpcAddressItem();
$recipient->Text 'Thorsten Tester <thorsten.tester@mailinator.com>'// Empfänger
$email->Recipients = array($recipient); // Empfänger hinzufügen

$content '<html>';
$content .= '<head>';
$content .= '<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">'// Zeichencodierung festlegen
$content .= '</head>';
$content .= '<body>';
$content .= '<p>Hallo Thorsten,<br><br>';
$content .= 'ich schicke Dir gleich die Datei mit dem Bild von der Verpackung zu.<br><br>';
$content .= 'Grüße,<br>';
$content .= 'Tanja</p>';
$content .= '</body>';
$content .= '</html>';

$content iconv('UTF-8''windows-1252//IGNORE//TRANSLIT'$content); // In windows-1252 Zeichencodierung umwandeln

$email->Properties->Email->EditorData $content// Inhalt

try
{
  
$emailId $itemService->New_($emailfalse); // E-Mail auf dem Server erzeugen (und nicht sperren)
  
echo 'Die E-Mail wurde im Postausgang erzeugt und wird in Kürze versendet. Die ID des neuen Elements ist: ' $emailId;
}
catch(
Exception $exception)
{
  die(
'Die E-Mail konnte nicht erstellt werden (Fehler: ' $exception->getMessage() . ').');
}
Soll der E-Mail ein Anhang beigefügt werden, so wird die E-Mail zunächst wie oben beschrieben erzeugt, allerdings in gesperrtem Zustand, damit sie nicht versendet wird, bevor das Attachment hinzugefügt wurde. Anschließend wird das Attachment zur E-Mail hinzugefügt und danach die E-Mail entsperrt, so dass sie in den Versand geht (der Server versendet keine Elemente solange sie gesperrt sind).
Das Hinzufügen eines Attachments zu einem Element erledigt die Methode "uploadItemNewAttachment()" des Client-Objekts (GhRpcClient). Up- und Download-Funktionen sind also im Client-Objekt verankert und nicht in den RPC Diensten. Die Methode erhält als Parameter die ID des Elements, zu dem das Attachment hinzugefügt werden soll, den Dateiinhalt des Attachments und den Dateinamen des Attachments.
Beim Hinzufügen von Dateianhängen an Elemente ist zu beachten, dass im Profil des Benutzers (in diesem Beispiel der Benutzername "tester") die betreffende Dateiendung freigegeben sein muss, ansonsten wird die RPC Funktion einen entsprechenden Fehler melden.
Das Entsperren von Elementen erfolgt über die Methode "Unlock()" des Item-Dienstes (GhRpcItemslibRpcItems) der Unit rpc_itemslib. Diese Methode verlangt die ID des zu entsperrenden Elements.
index.php - Versenden einer E-Mail mit Attachment:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
require_once 'ghrpc/ghrpc.php';

$client = new GhRpcClient('localhost'80false'tester''test123'); // Client-Objekt
$client->setUniqueClientIdCookieName('ghrpcexample9'); // eindeutige Client-ID

$itemService rpc_itemslib::newRpcItems($client); // Dienst für Elemente

$email rpc_itemslib::newRpcDetailedItem(true); // Element erzeugen (Eigenschaften "leer" vorbefüllen)
$email->Kind rpc_itemslib::ikEmail// Element vom Typ "E-Mail"
$email->State rpc_itemslib::isNew// Status "neu"
$email->Flags GhRpcUtils::newSet(rpc_itemslib::ifUseHtmlrpc_itemslib::ifUnsent); // ungesendete E-Mail mit HTML Inhalt
$email->Priority rpc_itemslib::ipNormal// normale Priorität
$email->GroupRef 1// In Gruppe mit ID 1 ablegen

$email->Subject 'Hier ist das Bild der Verpackung'// Betreff
$email->From->Text 'Tanja Tester <tanja.tester@mailinator.com>'// Absender

$recipient rpc_itemslib::newRpcAddressItem();
$recipient->Text 'Thorsten Tester <thorsten.tester@mailinator.com>'// Empfänger
$email->Recipients = array($recipient); // Empfänger hinzufügen

$content '<html>';
$content .= '<head>';
$content .= '<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">'// Zeichencodierung festlegen
$content .= '</head>';
$content .= '<body>';
$content .= '<p>Hallo Thorsten,<br><br>';
$content .= 'anbei das Bild von der Verpackung.<br><br>';
$content .= 'Grüße,<br>';
$content .= 'Tanja</p>';
$content .= '</body>';
$content .= '</html>';

$content iconv('UTF-8''windows-1252//IGNORE//TRANSLIT'$content); // In windows-1252 Zeichencodierung umwandeln

$email->Properties->Email->EditorData $content// Inhalt

try
{
  
$emailId $itemService->New_($emailtrue); // E-Mail auf dem Server erzeugen und sperren
}
catch(
Exception $exception)
{
  die(
'Die E-Mail konnte nicht erstellt werden (Fehler: ' $exception->getMessage() . ').');
}

try
{
  
$attachment dirname(__FILE__) . '/greyhound-packshot.png';
  
$client->uploadItemNewAttachment($emailIdfile_get_contents($attachment), basename($attachment)); // Attachment zur E-Mail hinzufügen
  
$itemService->Unlock($emailId); // E-Mail entsperren
  
echo 'Die E-Mail wurde im Postausgang erzeugt und wird in Kürze versendet. Die ID des neuen Elements ist: ' $emailId;
}
catch(
Exception $exception)
{
  die(
'Der Dateianhang konnte nicht zur E-Mail hinzugefügt werden (Fehler: ' $exception->getMessage() . ').');
}
Die Datei, die im Beispiel als Anhang versendet wird ist diese Grafik: