web-dev-qa-db-ja.com

その場でCSVを作成し、wp_mailを使用して添付ファイルとして送信する方法

フォーム送信からCSVファイルを作成し、そのファイルを特定のユーザーに電子メールで自動的に送信しようとしています。電子メール自体は問題なく送信されていますが、添付ファイルを送信できません。最初にファイルをサーバーに保存せずに添付ファイルを作成することは可能ですか?

function create_csv() {
    $fd = fopen('php://temp/', 'w');
    if($fd === FALSE) {
        die('Failed to open temporary file');
    }

    $records = array( array('dummy', 'data', 'found', 'here') );

    fputcsv($fd, $headers);
    foreach($records as $record) {
        fputcsv($fd, $record);
    }

    rewind($fd);
    $csv = stream_get_contents($fd);
    fclose($fd);
    return $csv;
}

$to = $email;
$subject = 'Subject';
$message = 'Message';
$headers = 'From: ' . $other_email;
$attachment = create_csv();

$sent = wp_mail($to, $subject, $message, $headers, $attachment);
2
harvestthemoon

これは、wp_mailが添付ファイルがattachで送信できるファイル名(ファイルパス)であることを期待しているためです。ファイルの内容を含む文字列を指定しています。

function create_csv() {

    $filepath = '/path/to/the/file.csv';

    $fd = fopen($filepath, 'w');
    if($fd === FALSE) {
        die('Failed to open temporary file');
    }

    $records = array( array('dummy', 'data', 'found', 'here') );

    fputcsv($fd, $headers);
    foreach($records as $record) {
        fputcsv($fd, $record);
    }

    rewind($fd);
    fclose($fd);
    return $filepath;
}

あなたの問題を解決します。 http://codex.wordpress.org/Function_Reference/wp_mail を参照してください。

2
Saurabh Shukla