HTML Mail

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • J Huntley Palmer

    #1

    HTML Mail

    How may I setup a proper HTML mail message with embedded href links
    using PHP, that follows all the MIME rules? Any examples or links would
    be appreciated.

    Thanks!
  • NC

    #2
    Re: HTML Mail

    J Huntley Palmer wrote:[color=blue]
    >
    > How may I setup a proper HTML mail message with embedded
    > href links using PHP, that follows all the MIME rules?[/color]

    Check out phpMailer: http://phpmailer.sf.net/

    Cheers,
    NC

    Comment

    • robert

      #3
      Re: HTML Mail

      "J Huntley Palmer" <jhp@dontspam.s pam> wrote in message
      news:12684lgilb trga5@news.supe rnews.com...
      | How may I setup a proper HTML mail message with embedded href links
      | using PHP, that follows all the MIME rules? Any examples or links would
      | be appreciated.

      many will post links to full-featured php mailer classes...they tend to be
      over-blown. here's what i use...if you understand the rfc, modifying the
      code below is easily done so that this can handle attachements as well.
      actually, this already has an attachement in it...you would use the same
      methodology as seen when a logo is added to the below.

      hth,

      me


      ======== email.class.php (php 5)

      // $dropDirectory w/b like 'c:/inetpub/mailroot/pickup/' for iis on windows
      // anywhere you'd like for unix
      // $exec w/b if php shelled out to sendmail, qmail, or whatever.

      <?
      class email
      {
      static function send(
      $to ,
      $from ,
      $cc = '' ,
      $bcc = '' ,
      $subject ,
      $text ,
      $html = '' ,
      $companyName = '' ,
      $logo = null ,
      $dropDirectory = '' ,
      $exec = null
      )
      {
      // prevent email injection hacks
      $subject = preg_replace("/\nfrom\:.*?\n/i" , "", $subject);
      $subject = preg_replace("/\nbcc\:.*?\n/i" , "", $subject);
      $subject = preg_replace("/\ncc\:.*?\n/i" , "", $subject);
      $text = preg_replace("/\nfrom\:.*?\n/i" , "", $text);
      $text = preg_replace("/\nbcc\:.*?\n/i" , "", $text);
      $text = preg_replace("/\ncc\:.*?\n/i" , "", $text);
      $html = preg_replace("/\nfrom\:.*?\n/i" , "", $html);
      $html = preg_replace("/\nbcc\:.*?\n/i" , "", $html);
      $html = preg_replace("/\ncc\:.*?\n/i" , "", $html);
      //
      $messageHtml = $html;
      $html = '
      <html>
      <style>
      body
      {
      background-color : #FFFFFF;
      color : black;
      font-family : verdana, tahoma, arial, times new
      roman, sans-serif;
      font-size : 8pt;
      padding : 2px;
      text-align : left;
      }
      hr
      {
      background-color : lightsteelblue;
      border : 0px;
      color : lightsteelblue;
      height : 1px;
      }
      table
      {
      border-collapse : collapse;
      border-padding : 2px;
      border-width : 0px;
      border-spacing : 0px;
      width : 700px;
      }
      td
      {
      background-color : #FFFFFF;
      color : black;
      font-family : verdana, tahoma, arial,
      "times new roman", sans-serif;
      font-size : 8pt;
      margin : 5px;
      padding-left : 5px;
      padding-right : 5px;
      spacing : 0px;
      text-align : left;
      vertical-align : top;
      }
      th
      {
      background-color : lavender;
      color : black;
      font-family : verdana, tahoma, arial,
      "times new roman", sans-serif;
      font-size : 8pt;
      font-weight : bold;
      margin : 5px;
      text-align : left;
      }
      </style>
      <body>
      ';
      if (isset($logo))
      {
      $file = @fopen($logo, 'r');
      $image = @fread($file, filesize($logo) );
      $image = @chunk_split(ba se64_encode($im age));
      @fclose($file);
      unset($file);
      $html .= '
      <img alt="' . $companyName . '" border="0px"
      src="cid:logo" style="float:ri ght;">
      <br>
      <br>
      <br>
      <br clear="all">
      ';
      }
      if ($messageHtml == ''){ $messageHtml = $text; }
      $html .= $messageHtml . '</body></html>';
      $boundry = '----=' . md5(uniqid(rand ()));
      $related = '----=' . md5(uniqid(rand ()));
      $mail = "MIME-Version: 1.0\r\n";
      $mail .= "TO: " . $to . "\r\n";
      $mail .= "FROM: " . $from . "\r\n";
      $mail .= "CC: " . $cc . "\r\n";
      $mail .= "BCC: " . $bcc . "\r\n";
      $mail .= "Subject: " . $subject . "\r\n";
      $mail .= "content-type: multipart/related;
      boundary=\"$rel ated\"\r\n\r\n\ r\n";
      $mail .= "--$related\r\n";
      $mail .= "content-type: multipart/alternative;
      boundary=\"$bou ndry\"\r\n\r\n\ r\n";
      $mail .= "--$boundry\r\n";
      $mail .= "content-type: text/plain; charset=\"iso-8859-1\"\r\n";
      $mail .= "content-transfer-encoding: 8bit\r\n\r\n";
      $mail .= $text . "\r\n\r\n";
      $mail .= "--$boundry\r\n";
      $mail .= "content-type: text/html; charset=\"iso-8859-1\"\r\n";
      $mail .= "content-transfer-encoding: 8bit\r\n\r\n";
      $mail .= $html . "\r\n\r\n";
      $mail .= "--$boundry--\r\n\r\n";
      $mail .= "--$related\r\n";
      $mail .= "content-type: image/jpeg\r\n";
      $mail .= "content-id: logo\r\n";
      $mail .= "content-disposition: attachment;
      filename=\"logo .jpg\"\r\n";
      $mail .= "content-transfer-encoding: base64\r\n\r\n" ;
      $mail .= $image . "\r\n\r\n";
      $mail .= "--$related--\r\n\r\n";
      $mail .= "-- End --\r\n";
      $fileName = $dropDirectory . md5(uniqid(rand ())) . '.eml';
      $file = fopen($fileName , 'wb');
      fwrite($file, $mail);
      fclose($file);
      unset($file);
      if (!isset($exec)) { return $mail; }
      exec($exec . $fileName);
      return $mail;
      }
      }
      ?>


      Comment

      • Alan Little

        #4
        Re: HTML Mail

        Carved in mystic runes upon the very living rock, the last words of
        robert of comp.lang.php make plain:
        [color=blue]
        > "J Huntley Palmer" <jhp@dontspam.s pam> wrote in message
        > news:12684lgilb trga5@news.supe rnews.com...
        >| How may I setup a proper HTML mail message with embedded href links
        >| using PHP, that follows all the MIME rules? Any examples or links
        >| would be appreciated.
        >
        > many will post links to full-featured php mailer classes...they tend
        > to be over-blown. here's what i use...if you understand the rfc,
        > modifying the code below is easily done so that this can handle
        > attachements as well. actually, this already has an attachement in
        > it...you would use the same methodology as seen when a logo is added
        > to the below.[/color]

        Just wondering -- how extensively has this code been used and tested? One
        of the most aggravating things I've encountered is the HTMLMail plugin
        for Phorm. I wrote the code, based on the RFCs, and for the most part it
        works fine. But some installations of OE have trouble with it. Only some,
        which is the aggravating part. I installed OE to check it out, and of
        course it works fine for me, so I haven't been able to troubleshoot it.

        Of course, it's been two and a half years since I looked at the code, so
        maybe I should go back and see if I've learned anything in that time.

        --
        Alan Little
        Phorm PHP Form Processor

        Comment

        • robert

          #5
          Re: HTML Mail


          "Alan Little" <alan@n-o-s-p-a-m-phorm.com> wrote in message
          news:Xns97C2D30 1EC2A3alanphorm com@216.196.97. 131...
          | Carved in mystic runes upon the very living rock, the last words of
          | robert of comp.lang.php make plain:
          |
          | > "J Huntley Palmer" <jhp@dontspam.s pam> wrote in message
          | > news:12684lgilb trga5@news.supe rnews.com...
          | >| How may I setup a proper HTML mail message with embedded href links
          | >| using PHP, that follows all the MIME rules? Any examples or links
          | >| would be appreciated.
          | >
          | > many will post links to full-featured php mailer classes...they tend
          | > to be over-blown. here's what i use...if you understand the rfc,
          | > modifying the code below is easily done so that this can handle
          | > attachements as well. actually, this already has an attachement in
          | > it...you would use the same methodology as seen when a logo is added
          | > to the below.
          |
          | Just wondering -- how extensively has this code been used and tested? One
          | of the most aggravating things I've encountered is the HTMLMail plugin
          | for Phorm. I wrote the code, based on the RFCs, and for the most part it
          | works fine. But some installations of OE have trouble with it. Only some,
          | which is the aggravating part. I installed OE to check it out, and of
          | course it works fine for me, so I haven't been able to troubleshoot it.

          i've used the same code for three companies over the past few years for
          automatic emails of various communications like general messaging, system
          error reporting, scheduled reporting with and without attached files like
          pdf's and excel.

          so far, so good. ;^) one system is windows based, the other two are linux
          and unix systems.


          Comment

          Working...