Отправить электронное письмо об обновлении таблицы Редактор таблиц данных - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь понять, как отправить электронное письмо при обновлении.

<?php

function my_mail_function(){
    $to = "rma@mysite.net";
    $subject = "RMA Update Completed";

    $values2 = $row['rma_submissions.paid'];

    $message = "
    <html>
    <head>
    <title>RMA Update Complete</title>
    </head>
    <body>
    <p>This is a copy of your RMA Update Request</p>
    <table>
      $values2
    <tr><td>Completed?: <b> Yes </b></td></tr>
    </table>
    </body>
    </html>
    ";

    // Always set content-type when sending HTML email
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

    // More headers
    $headers .= 'From: <noreply@mysite.net>' . "\r\n";


    mail($to,$subject,$message,$headers);
}

include( "lib/DataTables.php" );

use
    DataTables\Editor,
    DataTables\Editor\Field,
    DataTables\Editor\Format,
    DataTables\Editor\Mjoin,
    DataTables\Editor\Options,
    DataTables\Editor\Upload,
    DataTables\Editor\Validate,
    DataTables\Editor\ValidateOptions;

    Editor::inst( $db, 'rma_submissions', 'ID' )
        ->fields(
            Field::inst( 'rma_submissions.id' ),
            Field::inst( 'rma_submissions.timestamp' )
                ->validator( Validate::dateFormat( 'Y-m-d H:i:s' ) )
                ->getFormatter( Format::datetime( 'Y-m-d H:i:s', 'Y-m-d H:i:s' ) )
                ->setFormatter( Format::datetime( 'Y-m-d H:i:s', 'Y-m-d H:i:s' ) ),
            Field::inst( 'rma_submissions.location' ),
            Field::inst( 'rma_submissions.orig_invoice' ),
            Field::inst( 'rma_submissions.all_accessories' ),
            Field::inst( 'rma_submissions.new_submission' ),
            Field::inst( 'rma_submissions.man_sku' ),
            Field::inst( 'rma_submissions.device_id' ),
            Field::inst( 'rma_submissions.failure_desc' ),
            Field::inst( 'rma_submissions.defective_oob' ),
            Field::inst( 'rma_submissions.original_sales_date' ),
            Field::inst( 'rma_submissions.vendor' ),
            Field::inst( 'rma_submissions.email' ),
            Field::inst( 'rma_submissions.device_man' ),
            Field::inst( 'rma_submissions.district' ),
            Field::inst( 'rma_submissions.rma_number' ),
            Field::inst( 'rma_submissions.paid' ),
            Field::inst( 'rma_submissions.paid_date' ),
            Field::inst( 'rma_reasons.reason_description' ),
        )

        ->leftJoin( 'rma_reasons', 'rma_reasons.reason_code', '=', 'rma_submissions.failure_desc' )

        ->on( 'postEdit', function ( $editor, $id, $values, $row ) {
                my_mail_function();

        } )

        ->process( $_POST )
        ->json();


Вышеуказанное работает некорректно. Он отправляет электронное письмо, но с ошибками во внешнем интерфейсе, а также не включает информацию о переменных.

введите описание изображения здесь

Если я добавляю только текст, он отправляется нормально, но когда я добавляю какие-либо переменные, он выдает ошибку. Должна быть ошибка при извлечении переменной. Я попытался добавить, как показано ниже.

function my_mail_function(){
    $to = "rma@mysite.net";
    $subject = "SKU Update Completed";

    $values2 = $row;

    $message = "
    <html>
    <head>
    <title>Sku Update Complete</title>
    </head>
    <body>
       $row['rma_submissions.paid']
    </body>
    </html>
    ";

    // Always set content-type when sending HTML email
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

    // More headers
    $headers .= 'From: <support@mysite.net>' . "\r\n";


    mail($to,$subject,$message,$headers);
}

Я бы хотел, чтобы при обновлении отправлялось электронное письмо на указанные выше электронные письма и вставлялись данные из таблицы. Я потерялся в данный момент.

1 Ответ

1 голос
/ 08 августа 2020

Из документации PHP https://www.php.net/manual/en/language.types.string.php#language .types.string.parsing

Глядя на приведенный пример, расширение переменной для массива не должно содержать кавычек. Пожалуйста, попробуйте:

$message = "
<html>
<head>
<title>Sku Update Complete</title>
</head>
<body>
   $row[rma_submissions.paid]
</body>
</html>
";

Вообще говоря, из-за сложности расширения переменных я предпочитаю использовать конкатенацию. т.е.

$message = "
<html>
<head>
<title>Sku Update Complete</title>
</head>
<body>".$row['rma_submissions.paid']."</body>
</html>
";

Или я бы создал простой шаблон, а затем использовал бы preg replace или что-то подобное, чтобы заменить заполнители полей на фактическое значение.

...