2017-02-03 12 views
2

php mail()関数を使用して添付ファイルを添付して電子メールを作成するのは本当に苦労しています。このような身体のメッセージ:htmlとcssコードは電子メールphpメールで読めません

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: [email protected]\r\nReply-To: [email protected]"; 
     $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 [email protected]'); 

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

誰かが私を助けることができます?あなたのヘッダは/混合マルチパートに設定されている

答えて

2

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

は、私は通常「別のパッケージを試してみてください」型応答の大ファンではないんだけど、私はPHPのmail()機能のための例外を作る

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

全体のコンテンツタイプは '$ message'ではなく' $ headers'で設定されますが、 '$ message'も変更する必要があります。 –

+1

あなたはそうです。しかし、私は 'text/plain'もこの状況で問題になると思います。 – adistoe

+0

はい、私はすべての出現を' text/html'に変更する必要があります –

0

、それらを片付けてみてください。

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: My Name Here <[email protected]>' . "\r\n"; 

また、メッセージ内のコンテンツタイプを変更します。

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

そしてどこか他の代わりに

0

を試してみてください。あなたが経験している問題の種類を避けるためにそこにはるかに多くの痛みのないソリューションがあります。私は過去数年間で大きな成功を収めているPHPMailer(https://github.com/PHPMailer/PHPMailer)を使用しましたが、Swiftmailerなど、いくつかのものもあります。

関連する問題