简体   繁体   中英

Trying to create a text/html email message in PHP

I'm trying to create an email message that is in both text/plain and text/html formats using PHP.

I'm trying to follow this example: Sending an email with php plain text and html

When I open the message it is blank. I'm using the PHP mail() function.

This is the source for the email that gets created:

From - Wed Jul 16 15:54:24 2014
X-Account-Key: account2
X-UIDL: UID17453-1394824486
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:                                                                                 
Return-path: <energy@vps.corporations.org>
Envelope-to: aaron@campusactivism.org
Delivery-date: Wed, 16 Jul 2014 15:55:11 -0400
Received: from vps.corporations.org ([69.73.133.204]:35077)
    by vortex.nocdirect.com with esmtps (TLSv1:DHE-RSA-AES256-SHA:256)
    (Exim 4.82)
    (envelope-from <energy@vps.corporations.org>)
    id 1X7VIA-002zYn-7q
    for aaron@campusactivism.org; Wed, 16 Jul 2014 15:55:11 -0400
Received: from energy by vps.corporations.org with local (Exim 4.82)
    (envelope-from <energy@vps.corporations.org>)
    id 1X7VI9-00022J-Rw
    for aaron@campusactivism.org; Wed, 16 Jul 2014 15:55:05 -0400
To: aaron@campusactivism.org
Subject: New Test Subject -- aaron@campusactivsim.org--Test
X-PHP-Script: www.energyjustice.net/action/thanks.php for 68.57.17.14
From: d d <dad@dadssdd> 
Reply-To: dad@dadssdd 
X-Mailer: PHP/5.2.9 
MIME-Version: 1.0 
Content-Type: multipart/alternative; boundary="1kf9a19f031518xd151gkd"
Message-Id: <E1X7VI9-00022J-Rw@vps.corporations.org>
Date: Wed, 16 Jul 2014 15:55:05 -0400
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - vps.corporations.org
X-AntiAbuse: Original Domain - campusactivism.org
X-AntiAbuse: Originator/Caller UID/GID - [513 513] / [47 12]
X-AntiAbuse: Sender Address Domain - vps.corporations.org
X-Get-Message-Sender-Via: vps.corporations.org: authenticated_id: energy/only user confirmed/virtual account not confirmed
X-Spam-Status: No, score=-96.2
X-Spam-Score: -961
X-Spam-Bar: ---------------------------------------------------
X-Ham-Report: Spam detection software, running on the system "vortex.nocdirect.com", has
 identified this incoming email as possible spam.  The original message
 has been attached to this so you can view it (if it isn't spam) or label
 similar future email.  If you have any questions, see
 root\@localhost for details.

 Content preview:  --1kf9a19f031518xd151gkd Content-Type: text/plain; charset=iso-8859-1
    Content-Transfer-Encoding: 7bit Text Mesage version goes here More text message
    --1kf9a19f031518xd151gkd Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding:
    7bit <html> <b> TEST</b> </html> [...] 

 Content analysis details:   (-96.2 points, 8.0 required)

  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -100 USER_IN_WHITELIST      From: address is in the user's white-list
 -0.0 T_RP_MATCHES_RCVD      Envelope sender domain matches handover relay
                             domain
  1.0 BAYES_40               BODY: Bayes spam probability is 20 to 40%
                             [score: 0.2211]
  0.0 T_MIME_NO_TEXT         No (properly identified) text body parts
  2.8 MIME_PHP_NO_TEXT       No text body parts, X-Mailer: PHP
X-Spam-Flag: NO





        --1kf9a19f031518xd151gkd
        Content-Type: text/plain; charset=iso-8859-1 
        Content-Transfer-Encoding: 7bit


 Text Message version goes here
        More text message



        --1kf9a19f031518xd151gkd
        Content-Type: text/html; charset=iso-8859-1 
        Content-Transfer-Encoding: 7bit
        <html>
        <b> TEST</b>
        </html>



        --1kf9a19f031518xd151gkd--

I also tried adding a header: Content-Transfer-Encoding: 7bit using the mail function. But that didn't help.

If you want to send mail using PHP the best thing you can do is find a good mail handling library. Why bang your head re-inventing mail handling when a whole bunch of people have already simplified it for you?

I've been down this road of doing it from scratch. I now use SwiftMailer . There are others - and I have tried many - but this works best for me.

The standards for sending out properly formatted emails are strict. So it might be easiest to use SwiftMailer or another library.

That said, I solved my problem with the following email.

Some key factors - you need a blank line after each Content-Transfer-Encoding: header that is in the message part. The mail() function has headers in two parts - 1) regular headers and 2) headers that must be included in the message text to properly format a text/plain and text/html message. I had several spaces in this line that should have been blank and that caused an error. I had several other stray space characters in the headers that are in the message that caused it to fail.

From - Thu Jul 17 15:20:45 2014
X-Account-Key: account2
X-UIDL: UID17590-1394824486
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:                                                                                 
Return-path: <energy@vps.corporations.org>
Envelope-to: aaron@campusactivism.org
Delivery-date: Thu, 17 Jul 2014 15:21:37 -0400
Received: from vps.corporations.org ([69.73.133.204]:42354)
    by vortex.nocdirect.com with esmtps (TLSv1:DHE-RSA-AES256-SHA:256)
    (Exim 4.82)
    (envelope-from <energy@vps.corporations.org>)
    id 1X7rFE-001n6o-2z
    for aaron@campusactivism.org; Thu, 17 Jul 2014 15:21:37 -0400
Received: from energy by vps.corporations.org with local (Exim 4.82)
    (envelope-from <energy@vps.corporations.org>)
    id 1X7rFC-0000pm-As
    for aaron@campusactivism.org; Thu, 17 Jul 2014 15:21:30 -0400
To: aaron@campusactivism.org
Subject: New Test Subject -- aaron@campusactivsim.org--Test
X-PHP-Script: www.energyjustice.net/action/thanks.php for 68.57.17.14
From: e e <e3@e> 
Reply-To: e3@e 
MIME-Version: 1.0 
X-Mailer: PHP/5.2.9 
Content-Type: multipart/alternative;boundary="1kf9a19f031518xd151gkd"
Message-Id: <E1X7rFC-0000pm-As@vps.corporations.org>
Date: Thu, 17 Jul 2014 15:21:30 -0400
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - vps.corporations.org
X-AntiAbuse: Original Domain - campusactivism.org
X-AntiAbuse: Originator/Caller UID/GID - [513 513] / [47 12]
X-AntiAbuse: Sender Address Domain - vps.corporations.org
X-Get-Message-Sender-Via: vps.corporations.org: authenticated_id: energy/only user confirmed/virtual account not confirmed
X-Spam-Status: No, score=-101.9
X-Spam-Score: -1018
X-Spam-Bar: ---------------------------------------------------
X-Ham-Report: Spam detection software, running on the system "vortex.nocdirect.com", has
 identified this incoming email as possible spam.  The original message
 has been attached to this so you can view it (if it isn't spam) or label
 similar future email.  If you have any questions, see
 root\@localhost for details.

 Content preview:  charset="us-ascii" Content-Transfer-Encoding: 7bit Text Message
    charset="iso-8859-1" Content-Transfer-Encoding: 7bit Html Message [...] 

 Content analysis details:   (-101.9 points, 8.0 required)

  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -100 USER_IN_WHITELIST      From: address is in the user's white-list
 -0.0 RP_MATCHES_RCVD        Envelope sender domain matches handover relay domain
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
                             [score: 0.0000]
  0.0 HTML_MESSAGE           BODY: HTML included in message
  0.0 MISSING_MIME_HB_SEP    BODY: Missing blank line between MIME header and
                             body
  0.0 TVD_SPACE_RATIO        TVD_SPACE_RATIO
X-Spam-Flag: NO


--1kf9a19f031518xd151gkd
Content-Type: text/plain; 
charset="us-ascii" 
Content-Transfer-Encoding: 7bit

Text Message

--1kf9a19f031518xd151gkd
Content-Type: text/html; 
charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

<html>
<b> Html Message</b>
</html>
--1kf9a19f031518xd151gkd--

My PHP code:

$sMessage="--1kf9a19f031518xd151gkd
Content-Type: text/plain; 
charset=\"us-ascii\" 
Content-Transfer-Encoding: 7bit

Text Message

--1kf9a19f031518xd151gkd
Content-Type: text/html; 
charset=\"iso-8859-1\" 
Content-Transfer-Encoding: 7bit

<html>
<b> Html Message</b>
</html>
--1kf9a19f031518xd151gkd--";


//The email headers include the sender's name and email
$sHeaders = "From: ".$aRow['sFname']." ".$aRow['sLname']." <".$aRow['sEmail'].">" . " \r\n" .
"Reply-To: ".$aRow['sEmail']." \r\n" .
"MIME-Version: 1.0 \r\n" .
'X-Mailer: PHP/' . phpversion() ." \r\n" .
"Content-Type: multipart/alternative;".
"boundary=\"1kf9a19f031518xd151gkd\""."\r\n";

mail($value, $aRow_alert['sSubject'], $sMessage, $sHeaders);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM