电子邮件php邮件中无法读取html和css代码

时间:2017-02-03 08:17:01

标签: php html css email

我真的很难使用php mail()函数制作带附件的电子邮件,我已经成功附加了我的文件但是消息只是显示HTML和CSS代码而不是发送电子邮件正文消息:

enter image description here

这是我的代码:

 $htmlbody = '
                    <!doctype html>
                    <html>
                    <head>
                        <title>Invoice</title>

                        <style>
                        .invoice-box{
                            background-color: rgb(244, 244, 244);
                            max-width:800px;
                            margin:auto;
                            padding:30px;
                            border:1px solid #eee;
                            box-shadow:0 0 10px rgba(0, 0, 0, .15);
                            font-size:16px;
                            line-height:24px;
                            font-family:"Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
                            color:#555;
                            border-color: #fe7100;
                            border-width: medium;
                        }

                        .invoice-box table{
                            width:100%;
                            line-height:inherit;
                            text-align:left;
                        }

                        .invoice-box table td{
                            padding:5px;
                            vertical-align:top;
                        }

                        .invoice-box table tr td:nth-child(2){
                            text-align:right;
                        }

                        .invoice-box table tr.top table td{
                            padding-bottom:20px;
                        }

                        .invoice-box table tr.top table td.title{
                            font-size:45px;
                            line-height:45px;
                            color:#333;
                        }

                        .invoice-box table tr.information table td{
                            padding-bottom:40px;
                        }

                        .invoice-box table tr.heading td{
                            background:#33665e;
                            border-bottom:1px solid #ddd;
                            font-weight:bold;
                            color: white;
                        }

                        .invoice-box table tr.details td{
                            padding-bottom:5px;
                        }

                        .invoice-box table tr.item td{
                            border-bottom:1px solid #eee;
                        }

                        .invoice-box table tr.item.last td{
                            border-bottom:none;
                        }

                        .invoice-box table tr.total td:nth-child(2){
                            border-top:2px solid #eee;
                            font-weight:bold;
                        }

                        @media only screen and (max-width: 600px) {
                            .invoice-box table tr.top table td{
                                width:100%;
                                display:block;
                                text-align:center;
                            }

                            .invoice-box table tr.information table td{
                                width:100%;
                                display:block;
                                text-align:center;
                            }
                        }

                        .block-garis{
                          width: 100%;
                          height: 3px;
                          background-color: #fe7100;
                        }
                        </style>
                    </head>

                    <body>
                        <div class="invoice-box">
                            <table cellpadding="0" cellspacing="0">
                                <tr class="top">
                                    <td colspan="2">
                                        <table>
                                            <tr>
                                                <td class="title">
                                                    <img src="https://4travelo.com/logo.png" style="width:100%; max-width:200px;">
                                                </td>

                                                <td>
                                                    Invoice #: '.$id.'<br>
                                                    Created: '.$tglbook.'<br>
                                                    Due: '.$timeexpiry.'
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>

                                <tr>
                                  <td colspan="2"><div class="block-garis"></div></td>
                                </tr>

                                <tr class="information">
                                    <td colspan="2">
                                        <table>
                                            <tr>
                                                <td>
                                                    4travelo.<br>
                                                    Jl. Kebonsari Menanggal 2B<br>
                                                    Surabaya.
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr class="heading">

                                    <td>
                                        Keterangan Hotel
                                    </td>

                                    <td>
                                        &nbsp;
                                    </td>
                                </tr>

                                <tr class="details">
                                    <td>
                                        Nama Hotel
                                    </td>

                                    <td>
                                        '.$hotelname.'
                                    </td>
                                </tr>
                                <tr class="details">
                                    <td>
                                        Alamat Hotel
                                    </td>

                                    <td>
                                        '.$alamat.'
                                    </td>
                                </tr>
                                <tr class="details">
                                    <td>
                                        Checkin
                                    </td>

                                    <td>
                                       '.$checkin.'
                                    </td>
                                </tr>
                                <tr class="details">
                                  <td>
                                      Checkout
                                  </td>

                                  <td>
                                     '.$checkout.'
                                  </td>
                                </tr>

                                <tr class="heading">
                                    <td>
                                        Guest
                                    </td>

                                    <td>
                                        &nbsp;
                                    </td>
                                </tr>

                                <tr class="item">
                                    <td>
                                        Guest Name
                                    </td>

                                    <td>
                                        '.$paxesname.'
                                    </td>
                                </tr>

                                <tr class="item">
                                    <td>
                                        Type Kamar
                                    </td>

                                    <td>
                                       '.$room.'
                                    </td>
                                </tr>

                                <tr class="item">
                                    <td>
                                        Include BF/Net
                                    </td>

                                    <td>
                                        '.$meal.'
                                    </td>
                                </tr>

                                <tr class="item">
                                    <td>
                                        Dewasa
                                    </td>

                                    <td>
                                        '.$adult.'
                                    </td>
                                </tr>

                                <tr class="item">
                                    <td>
                                        Anak - Anak
                                    </td>

                                    <td>
                                        '.$child.'
                                    </td>
                                </tr>

                                <tr class="heading">
                                    <td>
                                        Total
                                    </td>

                                    <td>
                                        &nbsp;
                                    </td>
                                </tr>

                                 <tr class="item">
                                    <td>
                                        Total
                                    </td>

                                    <td>
                                        <b>Rp '.$payment.'</b>
                                    </td>
                                </tr>
                                <tr>
                                  <td>&nbsp;</td>
                                  <td>&nbsp;</td>
                                </tr>

                                <tr>
                                  <td>&nbsp;</td>
                                  <td>&nbsp;</td>
                                </tr>

                                <tr>
                                  <td>&nbsp;</td>
                                  <td>&nbsp;</td>
                                </tr>
                                <tr style="font-size:10px; padding-top:50px;">
                                  <td><b>Hotel cancelation policy :
                                  <br>1. Pemesanan non refundable<br>
                                  2. Tanggal inap & tipe kamar tidak dapat dirubah</b>
                                  </td>
                                  <td><b>our partner : </b> <br><img src="https://4travelo.com/hb.png" alt=""></td>
                                </tr>

                                <tr>
                                  <td>&nbsp;</td>
                                  <td style=""></td>
                                </tr>
                            </table>
                        </div>

                    </body>
                    </html>';
        $to = $email; //Recipient Email Address
        $subject = "Test email with attachment"; //Email Subject
        $headers = "From: admin@4travelo.com\r\nReply-To: admin@4travelo.com";
        $random_hash = md5(date('r', time()));
        $headers .= "\r\nContent-Type: multipart/mixed; 
        boundary=\"PHP-mixed-".$random_hash."\"";
        // Set your file path here
       $attachment = chunk_split(base64_encode(file_get_contents('/home/travelo/public_html/4travelo.com/triomacan/4travelo_beta-2.0/document/'.$invoice.'.pdf'))); 


        //define the body of the message.
        $message = "--PHP-mixed-$random_hash\r\n"."Content-Type: multipart/alternative; 
        boundary=\"PHP-alt-$random_hash\"\r\n\r\n";
        $message .= "--PHP-alt-$random_hash\r\n"."Content-Type: text/plain; 
        charset=\"iso-8859-1\"\r\n"."Content-Transfer-Encoding: 7bit\r\n\r\n";


        //Insert the html message.
        $message .= "$htmlbody";
        $message .="\r\n\r\n--PHP-alt-$random_hash--\r\n\r\n";


        //include attachment
        $message .= "--PHP-mixed-$random_hash\r\n"."Content-Type: application/zip; 
        name=\"invoice.pdf\"\r\n"."Content-Transfer-Encoding: 
        base64\r\n"."Content-Disposition: attachment\r\n\r\n";

        $message .= $attachment;
        $message .= "/r/n--PHP-mixed-$random_hash--";


        //send the email
        $mail = mail( $to, $subject , $message, $headers, '-f admin@4travelo.com' );

        echo $mail ? "Mail sent" : "Mail failed";

有人能帮助我吗?

3 个答案:

答案 0 :(得分:2)

而不是

$message .= "--PHP-alt-$random_hash\r\n"."Content-Type: text/plain; 

$message .= "--PHP-alt-$random_hash\r\n"."Content-Type: text/html; 

答案 1 :(得分:0)

您的标题设置为multipart / mixed,请尝试整理它们:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: My Name Here <noreply@example.co.uk>' . "\r\n";

同时将邮件中的内容类型更改为:

$message .= "--PHP-alt-$random_hash\r\n"."Content-Type: text/html; 

以及其他任何地方

答案 2 :(得分:0)

我通常不是“尝试不同的包”类型响应的忠实粉丝,但我对PHP的mail()函数做了一个例外。有更多无痛的解决方案可以避免您遇到的问题。我在过去的几年中使用过PHPMailer(https://github.com/PHPMailer/PHPMailer)取得了巨大的成功,但是还有其他几个,比如Swiftmailer。