การฝังรูปภาพในอีเมลด้วย PHP

ฉันกำลังส่งอีเมลโดยเซิร์ฟเวอร์ PHP ผ่านเซิร์ฟเวอร์ smtp ในพื้นที่ อีเมล HTML นี้ควรมีรูปภาพที่ควรฝังไว้ ฉันตั้งค่า Pear-Extensions Mail, Mail_Mime และ Net_SMTP แล้ว ส่งอีเมลทั้งหมดได้ แต่ไม่มีการแนบรูปภาพใดๆ

ฉันพบวิธีแก้ปัญหานี้แล้ว: PHP การแนบรูปภาพไปกับอีเมล, แม้ว่าฉันจะปฏิบัติตามทีละขั้นตอนแล้ว แต่รูปภาพก็ยังไม่ได้แนบไปกับอีเมล ฉันได้ลองแนบรูปภาพภายใน $mime->addAttachment("/path/to/image/smile.gif", "image/gif"); แล้ว แต่ยังไม่ได้รับไฟล์แนบใดๆ

    $userGivenName = 'John';
    $userSurname = 'Doe';

    $crlf = "\r\n";
    $mime = new Mail_mime($crlf); 
    $cid = "image001.png";
    $mime->addHTMLImage("/filehost/img/emailLogo.png", "image/png", "", true, $cid);

    $mailtext = '
        <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
            <head>
                <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
                <meta name=Generator content="Microsoft Word 15 (filtered medium)">
            </head>
            <body lang=DE link="#0563C1" vlink="#954F72">   
                <div class=WordSection1>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            Hello '.$userGivenName.' '.$userSurname.',
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            some text
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            Regards
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <b>
                            <span style=\'font-size:10.0pt;font-family:"Arial",sans-serif;color:#E30613;mso-fareast-language:DE\'>
                                Max Mustermann
                            </span>
                        </b>
                        <span style=\'font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D;mso-fareast-language:DE\'>
                        </span>
                        <span style=\'font-size:10.0pt;font-family:"Arial",sans-serif;color:#575756;mso-fareast-language:DE\'>
                            <br>
                            <b>
                                Department XY
                            </b>
                            <br>
                            ................................................................
                        </span>
                        <span style=\'font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D;mso-fareast-language:DE\'> 
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'font-size:10.0pt;mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <img border=0 width=82 height=70 style=\'width:.8541in;height:.7291in\' id="Picture_x0020_1" src="cid:'.$cid.'" alt="Company Logo">
                        </span>
                        <span style=\'font-size:12.0pt;font-family:"Times New Roman",serif;color:#1F497D;mso-fareast-language:DE\'>
                            <o:p>
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <span style=\'mso-fareast-language:DE\'>
                            <o:p>
                                &nbsp;
                            </o:p>
                        </span>
                    </p>
                    <p class=MsoNormal>
                        <o:p>
                            &nbsp;
                        </o:p>
                    </p>
                </div>
            </body>
        </html>
    ';

    $hdrs = array( 
            'From' => '[email protected]', 
            'Subject' => 'mysubject' 
            ); 

    $mime->addAttachment("/filehost/img/emailLogo.png", "image/png");

    $msg_text = 'Plaintext';

    $mime->setTXTBody($msg_text);
    $mime->setHTMLBody($mailtext); 
    $body = $mime->get();
    $hdrs = $mime->headers($hdrs);

    $mail = Mail::factory('smtp', array('host' => 'smtp.mycompany.local', 'port' => '25', 'auth' => false));
    $mail->send($_POST['username'], $hdrs, $body);

person Platte    schedule 14.08.2019    source แหล่งที่มา
comment
คุณแน่ใจหรือว่าเส้นทางนั้นถูกต้อง? คุณมีไดเร็กทอรีในรูทของระบบไฟล์ชื่อ filehost?   -  person Jonnix    schedule 14.08.2019
comment
ฉันตรวจสอบเส้นทางแล้วและทำงานได้ดี สิทธิ์ทั้งหมดได้รับการตั้งค่าอย่างถูกต้อง และบนไซต์สาธิต ฉันได้ทดสอบอีเมลนี้พร้อมรวมรูปภาพโดยตรงแล้ว ในไดเร็กทอรีรากของเว็บเซิร์ฟเวอร์ ฉันได้สร้างโฟลเดอร์ชื่อ filehost ซึ่งเป็นที่เก็บไฟล์ทั้งหมด ซึ่งไม่สามารถเข้าถึงได้โดยตรงแต่ถูกอ้างอิงโดยไฟล์อื่น   -  person Platte    schedule 14.08.2019


คำตอบ (1)


ลองส่งด้วย PHPMailer ซึ่งเป็นวิธีแก้ปัญหาง่ายๆ

https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

ใช้งานได้กับการเชื่อมต่อ TLS/SSL smtp (gmail ต้องการการเชื่อมต่อ TLS)

person bobom    schedule 23.08.2019
comment
แม้ว่าสิ่งนี้จะไม่ตอบคำถามของฉันจริงๆ แต่มันก็ช่วยแก้ปัญหาของฉันได้ PHPMailer ใช้งานได้ดีและทำในสิ่งที่ฉันต้องการ - person Platte; 26.08.2019