Skip to content

Commit

Permalink
PHPMAILER : Doc: Beispiele für neue Extensionpoints (#5467)
Browse files Browse the repository at this point in the history
  • Loading branch information
skerbis committed Dec 31, 2022
1 parent cc70617 commit ed23cb4
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 1 deletion.
49 changes: 48 additions & 1 deletion redaxo/src/addons/phpmailer/README.de.md
Expand Up @@ -168,7 +168,7 @@ Das Log liefert Informationen zu Zeit, Absender, Empfänger, Betreff und Meldung
Das Log wird in der Datei `/redaxo/data/log/mail.log` gespeichert.


### E-Mail-Archivierung
### E-Mail-Archivierung

Bei eingeschalteter E-Mail-Archivierung werden alle E-Mails im Ordner `/redaxo/data/addons/phpmailer/mail_log` im `.eml`-Format chronologisch nach Jahr und Monat in Unterordnern vollständig archiviert. .eml-Dateien können in gängigen E-Mail-Programmen zur Betrachtung geöffnet und importiert werden.
Nicht versendete E-Mails erhalten das Präfix `not_sent_`.
Expand Down Expand Up @@ -203,6 +203,53 @@ rex_extension::register('PHPMAILER_CONFIG', function (rex_extension_point $ep) {
});
```

## Extension-Point `PHPMAILER_PRE_SEND`

Dieser Extension-Point bietet sich an um E-Mails vor dem Versand zu überprüfen. So könnte an dieser Stelle ein Spamfilter greifen oder ein Virusscanner eingesezt werden.

```php
rex_extension::register('PHPMAILER_PRE_SEND', function (rex_extension_point $ep) {
$subject = $ep->getSubject();
if (str_contains('bad word', $subject->Body) {
do_something();
}
});
```

## Extension-Point `PHPMAILER_POST_SEND`

Der `PHPMAILER_POST_SEND` bietet sich an um nach dem Versand noch eigene Verarbeitungsschritte durchzuführen.

### Beispiel: Gesendete Nachricht in IMAP-Ordner speichern:


```php
rex_extension::register('PHPMAILER_POST_SEND', function (rex_extension_point $ep) {
$subject = $ep->getSubject();
$host = $subject->Host;
$port = '993';
$user = 'user@domain.tld';
$pass = 'XYZ12324';
$imap_path_prefix = 'INBOX';
$server = '{' . $host . ':' . $port . '/imap/ssl}';

// set IMAP Timeout
imap_timeout(IMAP_OPENTIMEOUT, 14);
// establish secure connection
if ($connection = imap_open($server, $user, $pass)) {
// get all mailboxes as Array for testing
// $mailboxes = imap_getmailboxes($connection, "{'.$host.'}", "*");
// dump($mailboxes);
$result = imap_append($connection, "{'.$host.'}" . $imap_path_prefix . '.Sent', $subject->getSentMIMEMessage());
imap_close($connection);
} else {
// Errorhandling
throw new rex_exception(sprintf('IMAP Error: "%s"', imap_last_error()));
}
});
```



## Tipps

Expand Down
47 changes: 47 additions & 0 deletions redaxo/src/addons/phpmailer/README.md
Expand Up @@ -197,6 +197,53 @@ rex_extension::register('PHPMAILER_CONFIG', function (rex_extension_point $ep) {
});
```

## Extension point `PHPMAILER_PRE_SEND`

This extension point can be used to check e-mails before they are sent. So a spam filter or a virus scanner could be used at this point for example.

```php
rex_extension::register('PHPMAILER_PRE_SEND', function (rex_extension_point $ep) {
$subject = $ep->getSubject();
if (str_contains('bad word', $subject->Body) {
do_something();
}
});
```

## Extension point `PHPMAILER_POST_SEND`

The `PHPMAILER_POST_SEND` is useful to perform custom processing steps after sending.

### Example: Save sent message to IMAP folder:

```php
rex_extension::register('PHPMAILER_POST_SEND', function (rex_extension_point $ep) {
$subject = $ep->getSubject();
$host = $subject->host;
$port = '993';
$user = 'user@domain.tld';
$pass = 'XYZ12324';
$imap_path_prefix = 'INBOX';
$server = '{' . $host . ':' . $port . '/imap/ssl}';

// set IMAP timeout
imap_timeout(IMAP_OPENTIMEOUT, 14);
// establish secure connection
if ($connection = imap_open($server, $user, $pass)) {
// get all mailboxes as array for testing
// $mailboxes = imap_getmailboxes($connection, "{'.$host.'}", "*");
// dump($mailboxes);
$result = imap_append($connection, "{'.$host.'}" . $imap_path_prefix . '.Sent', $subject->getSentMIMEMessage());
imap_close($connection);
} else {
// error handling
throw new rex_exception(sprintf('IMAP Error: "%s"', imap_last_error()));
}
});
```



## Tips

### Encryption: AutoTLS
Expand Down

0 comments on commit ed23cb4

Please sign in to comment.