0

仲間の開発者から PHP タスクを継承しました。基本的に、その場で CSV を作成して電子メールで送信する必要があります。CSV コンテンツの作成は機能しており、検証済みであり、問​​題ありません。しかし、電子メールと CSV をテストすると、電子メールと添付ファイルは正常に作成されましたが、両方ともテキスト コンテンツのない空白でしたか? スクリプトに隠し文字 (タブなど) が含まれていないことを確認し、再テストするとメールにコンテンツが含まれていることを確認しましたが、CSV 添付ファイルがありません!

これは私のPHPコードです:

// Make CSV & Email
$csvString = chunk_split(base64_encode($csvString)); //CSV is produced earlier and is valid

// create the email and send it off

$mailSubject = "Daily CSV from the site";
$from = "root@localhost.com";
$headers =  "From: " . $from ."\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-Type: multipart/mixed;
boundary="----=_

NextPart_001_0011_1234ABCD.4321FDAC"' . "\n";

$message = 'This is a multi-part message in MIME format.

------=_NextPart_001_0011_1234ABCD.4321FDAC
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Hello

Oh look! Attached a CSV!

Regards

------=_NextPart_001_0011_1234ABCD.4321FDAC
Content-Type: application/octet-stream;  name="';

$message .= "$cvsName";
$message .= '"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="';
$message .= "$cvsName";
$message .= '"

';
$message .= "$csvString"; // was encoded
$message .= '
------=_NextPart_001_0011_1234ABCD.4321FDAC--
';

    // now send the email
    if (mail($email, $mailSubject, $message, $headers, "-f$from")) {
        echo("Message successfully sent!");
    } else {
        echo("Message delivery failed...");
    }

これは作成された電子メールです。CSV は添付されていませんが、電子メールにはエンコードされた CSV テキスト/値が含まれていることに注意してください。誰でも助けることができますか?

ここに画像の説明を入力

これは、生成された電子メールのソース コードです。

Date: Fri, 05 Apr 2013 14:39:52 +0200
Subject: Daily CSV from the site
To: root@localhost.com
From: root@localhost
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="-----=_NextPart_001_0011_1234ABCD.4321FDAC"



This is a multi-part message in MIME format.

-----=_NextPart_001_0011_1234ABCD.4321FDAC

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

Hello

Oh look! Attached a CSV!

Regards

-----=_NextPart_001_0011_1234ABCD.4321FDAC
Content-Type: application/octet-stream; name="marcel.preukschat-Requested-19-03-2013.csv"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="marcel.preukschat-Requested-19-03-2013.csv"

marcel.preukschat-Requested-19-03-2013.csv

-----=_NextPart_001_0011_1234ABCD.4321FDAC
4

1 に答える 1

0

これは、境界定義の近くにある不要な改行に関係していると思います。境界線を少し短くして、物事をより明確にしましょう。次のマルチパート メッセージの例も参照してください。

$headers .= 'Content-Type: multipart/mixed; boundary="NextPart_001"' . "\n";

そして以下の部分:

$message = 'This is a multi-part message in MIME format.
--NextPart_001
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Hello

Oh look! Attached a CSV!

Regards

--NextPart_001
Content-Type: application/octet-stream;  name="';

$message .= '
--NextPart_001--
';
于 2013-04-05T12:22:23.903 に答える