Archiv

Artikel Tagged ‘mail()’

Zugangsdaten der gängigen Mailprovider

22. März 2009 Keine Kommentare

Heute hat PC Tipp auf der Webseite eine Liste der Zugangsdaten der gängigen Mailprovider veröffentlicht.

Ich habe dies zum Anlass genommen die Liste sauber auf meiner Webseite zusammenzustellen.

Zugangdaten der gängigen Mailprovider

KategorienWebservice Tags: , ,

blat – Shell Mailclient für Windows

22. Januar 2009 Keine Kommentare

Wer schon einmal mit einem Batch Script ein E-Mail senden wollte, kommt um das Programm blat nicht herum. blat ist ein einfacher Mailclient mit dem über die Shell E-Mails gesendet werden können. Er hat umfangreiche Konfigurationsmöglichkeiten. So kann neben den üblichen Parametern  auch der Mailtyp  (Text/HTML), Attachment (Inline / angehängt), Reply-To und vieles weiteres eingestellt werden.

Ich brauche blat als Mailclient in einem ERP System. Dabei werden per Script (interne Programmiersprache des ERP Systems) alle Kunden mit nach bestimmten Parametern zusammen gesucht. Anschliessend wird  ein E-Mail generiert und mit blat verschickt.

Batch Code von blat

@echo off :::::::::::::: Lets set some variables ::::::::::::::
set eMail=tim@blat.tld
set subj=-s "Test Blat"
set server=-server localhost
set x=-x "X-Header-Test: Can Blat do it? Yes it Can!"
set debug=-debug -log blat.log -timestamp

::::::::::::::::: Now we run Blat! :::::::::::::::::
blat %0 -to %eMail% -f %eMail% %subj% %server% %debug% %x%

Der weitere Syntaxcode ist auf der Homepage von blat zu finden.

Zur Homepage von blat

KategorienSoftware, Windows Tags: , ,

Umlaute in der PHP mail() Funktion

8. Januar 2009 4 Kommentare

Dieses Problem kennen wahrscheinlich die meisten Benutzer welche die mail() Funktion von PHP benutzen und das Subject im Formular definieren lassen, bzw als Absendernamen einen Namen mit Umlauten benutzen möchten.

Mit diesem Code kann die mail() Funktion mit Umlauten umgehen:

<?php
$From = "Jürgen Müstermän ";
$Subject = "Viele Umlaute: äöü und ein ß natürlich!";

$header = "MIME-Version: 1.0\r\n";
$header .= "From: =?ISO-8895-15?Q?".imap_8bit($From)."?=\r\n";

mail("test@test.net", "=?ISO-8859-15?Q?".imap_8bit($Subject)."?=\r\n","$body,$headers);
?>

Wenn in PHP das IMAP Modul nicht enigebaut ist, funktioniert die PHP Funktion “imap_8bit” nicht. Deshalb empfehle ich an dieser Stelle als Ersatz diese Funktion:

<?php
<?php
function quoted_printable_encode($sText,$bEmulate_imap_8bit=true) {
  // split text into lines
  $aLines=explode(chr(13).chr(10),$sText);

  for ($i=0;$i<count($aLines);$i++) {
    $sLine =& $aLines[$i];
    if (strlen($sLine)===0) continue; // do nothing, if empty

    $sRegExp = '/[^\x09\x20\x21-\x3C\x3E-\x7E]/e';

    // imap_8bit encodes x09 everywhere, not only at lineends,
    // for EBCDIC safeness encode !"#$@[\]^`{|}~,
    // for complete safeness encode every character :)
    if ($bEmulate_imap_8bit)
      $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/e';

    $sReplmt = 'sprintf( "=%02X", ord ( "$0" ) ) ;';
    $sLine = preg_replace( $sRegExp, $sReplmt, $sLine );

    // encode x09,x20 at lineends
    {
      $iLength = strlen($sLine);
      $iLastChar = ord($sLine{$iLength-1});

      //              !!!!!!!!  
      // imap_8_bit does not encode x20 at the very end of a text,
      // here is, where I don't agree with imap_8_bit,
      // please correct me, if I'm wrong,
      // or comment next line for RFC2045 conformance, if you like
      if (!($bEmulate_imap_8bit && ($i==count($aLines)-1)))
         
      if (($iLastChar==0x09)||($iLastChar==0x20)) {
        $sLine{$iLength-1}='=';
        $sLine .= ($iLastChar==0x09)?'09':'20';
      }
    }    // imap_8bit encodes x20 before chr(13), too
    // although IMHO not requested by RFC2045, why not do it safer :)
    // and why not encode any x20 around chr(10) or chr(13)
    if ($bEmulate_imap_8bit) {
      $sLine=str_replace(' =0D','=20=0D',$sLine);
      //$sLine=str_replace(' =0A','=20=0A',$sLine);
      //$sLine=str_replace('=0D ','=0D=20',$sLine);
      //$sLine=str_replace('=0A ','=0A=20',$sLine);
    }

    // finally split into softlines no longer than 76 chars,
    // for even more safeness one could encode x09,x20
    // at the very first character of the line
    // and after soft linebreaks, as well,
    // but this wouldn't be caught by such an easy RegExp                  
    preg_match_all( '/.{1,73}([^=]{0,2})?/', $sLine, $aMatch );
    $sLine = implode( '=' . chr(13).chr(10), $aMatch[0] ); // add soft crlf's
  }

  // join lines into text
  return implode(chr(13).chr(10),$aLines);
}
?>

Quelle PHP.net Kommentar von UMU

Wer sich für die ISO 8859-1 Codierung interessiert, den Verweise ich auf die Tabelle ISO 8859-1 (PDF)

KategorienPHP Tags: ,
Get Adobe Flash player