【问题标题】:MIME email, blank message bodyMIME 电子邮件,空白邮件正文
【发布时间】:2016-01-28 05:42:06
【问题描述】:

所以我尝试搜索,但找不到可以应用于我的代码的答案。我有一个开发人员为我更新了一个页面,这些电子邮件通过我的移动设备发送,但在我的计算机电子邮件 Thunderbird 上,正文始终是空白的。有问题的代码如下所示:

$mailBody = "Dog Registration Form Data" . PHP_EOL . $strDogCName . ";" . $strDogFName . ";" . $strBreed . ";" . $strGender . ";" . $strHt . ";" . $strBdmm . "/" . $strBddd . "/" . $strBdyy . ";" . $strFName . ";" . $strLName . ";" . $strAddr1 . ";" . $strCity . ";" . $strState . ";" . $strZip . ";" . $strCountry . ";" . $strPhone . ";" . $strEMail . ";" . $member_num. ";" . $dog_num;
        // injection test before setting message headers
        $sender_name = $strFName . " " . $strLName;
        $sender_name = injection_test($sender_name);
        $sender_email = injection_test($strEMail);
        // Set headers and send.  This should be moved to a reusable function
        $mime_boundary = md5(time()); 
        $headers = '';
        $msg = '';
        $headers .= 'From: ' . $sender_name . ' <' . $sender_email . '>' . PHP_EOL;
        $headers .= 'Reply-To: ' . $sender_name . ' <' . $sender_email . '>' . PHP_EOL;
        $headers .= 'Return-Path: ' . $sender_name . ' <' . $sender_email . '>' . PHP_EOL;
        $headers .= "Message-ID: <" . time() . "cform@" . $_SERVER['SERVER_NAME'] . ">" . PHP_EOL;
        $headers .= 'X-Sender-IP: ' . $_SERVER["REMOTE_ADDR"] . PHP_EOL;
        $headers .= "X-Mailer: PHP v" . phpversion() . PHP_EOL;

        $headers .= 'MIME-Version: 1.0' . PHP_EOL;
        $headers .= 'Content-Type: multipart/related; boundary="' . $mime_boundary . '"';

        $msg .= '--' . $mime_boundary . PHP_EOL;
        $msg .= 'Content-Type: text/plain; charset="UTF-8"' . PHP_EOL;
        $msg .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;

        $msg .= $mailBody . PHP_EOL . PHP_EOL;
        $msg .= '--' . $mime_boundary . '--' . PHP_EOL . PHP_EOL;

        ini_set('sendmail_from', $sender_email);

        $msg = "Thank you for registering with NADAC.". PHP_EOL. " Here is the info you provided." . PHP_EOL ."Callname: ". $strDogCName . PHP_EOL. "Registered Name: " . $strDogFName . PHP_EOL . "Breed: " . $strBreed .PHP_EOL . "Gender: " . $strGender .PHP_EOL . "Height: " . $strHt .PHP_EOL . "Birthday: " . $strBdmm . "/" . $strBddd . "/" . $strBdyy .PHP_EOL . "Owner First Name: " . $strFName .PHP_EOL . "Owner Last Name: " . $strLName .PHP_EOL . "Address: " . $strAddr1 .PHP_EOL . "City: " . $strCity .PHP_EOL . "State: " . $strState .PHP_EOL . "Zip Code: " . $strZip .PHP_EOL . "Country: " . $strCountry .PHP_EOL . "Phone: " . $strPhone . PHP_EOL . "Email: " . $strEMail .PHP_EOL . "Associate number: " . $member_num. PHP_EOL . "Dog Number: " . $dog_num;
        $mailSubject = "Thank you for registering.";


        $send_status = mail($mailTo, $mailSubject, $msg, $headers);

        $mailTo = $strEMail;
        mail($mailTo, $mailSubject, $msg, $headers);

        ini_restore('sendmail_from');

        // should check send_status here and do something - TODO

        unset($_POST['submitted']);
        // Done with the mail,  display confirmation

我确定我只是缺少一些简单的东西。但我找不到它,而且开发它的程序员似乎不相信这个问题。我认为这不是我的电子邮件提供商的本地问题。

【问题讨论】:

    标签: php html email


    【解决方案1】:

    您是否尝试过使用 Content-Type: multipart/alternative 而不是 'multipart/related'?

    如果两次 mail() 调用和 $send_status 到未知的 $mailTo var 会很奇怪

    【讨论】:

    • 试一试,没有运气。