CSV создание таблицы для электронной почты - PullRequest
0 голосов
/ 22 октября 2019

У нас есть сайт WordPress, и он использует SemRUSH API, который возвращает запрос в CSV. Мне нужно отправить этот запрос по электронной почте и сделать его читабельным, так как сейчас я просто отправляю ответ, поэтому он выглядит как

База данных; Домен; Ранг; Органические ключевые слова; Органический трафик; Органические затраты; Ключевые слова AdWords; Трафик AdWords; Стоимость AdWords; ключевые слова PLA; PLA использует нас; google.com; 5; 397712791; 570450887; 641270788; 11662; 2671447; 3225368; 138676; 35275

Вот как я это делаюон есть в моем functions.php

add_action('wp_ajax_mail_before_submit', 'mycustomtheme_send_mail_before_submit');

// if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_mail_before_submit', 'mycustomtheme_send_mail_before_submit');
function mycustomtheme_send_mail_before_submit(){
    check_ajax_referer('my_email_ajax_nonce');
    if ( isset($_POST['action']) && $_POST['action'] == "mail_before_submit" ){
         $response = file_get_contents('https://api.semrush.com/?key=xxxxxxxxxxxxxxxxxxxxx&type=domain_ranks&export_columns=Db,Dn,Rk,Or,Ot,Oc,Ad,At,Ac,Sh,Sv&domain='.$_POST['domain'].'&database=us');
        echo "$response";
    //send email  wp_mail( $to, $subject, $message, $headers, $attachments ); ex:
        wp_mail($_POST['toemail'],'Your Personalized Audit', $response);
        echo 'email sent';
        die();
    }
    echo 'error';
    die();
}

Также есть файл js, который загружает данные, которые получают данные (имя домена и поле электронной почты) из формы, поэтому запрос API принимает определенный домен. и отправляет по электронной почте конкретное письмо, которое выглядит так

    // $() will work as an alias for jQuery() inside of this function
   jQuery('#rankForm').submit(function() {
console.log("form submitted");
var data = {
    action: 'mail_before_submit',
    toemail: jQuery('#form-field-eed99f1').val(),
    domain: jQuery('#form-field-domainField').val(),

    _ajax_nonce: jQuery('#my_email_ajax_nonce').data('nonce'),
};
console.log(data);
jQuery.post(window.location.origin + "/wp-admin/admin-ajax.php", data, function(response) {
    console.log('Got this from the server: ' + response);
});

});
} );


, затем этот код добавляется в footer.php

<span id="my_email_ajax_nonce" data-nonce="<?php echo wp_create_nonce( 'my_email_ajax_nonce' ); ?>"></span>

как мне поступить с переменной$ response, который является ответом csv от API и делает его читаемым по электронной почте. Спасибо за любые советы, спасибо.

Позвольте мне добавить немного дальше, поэтому я хочу пройтись по ответу и составить таблицу, которую я могу отправить по электронной почте, но у меня нет опыта работы с PHP, я нашел учебники в phpобрабатывают файлы CSV, но большинство из них делают противоположное тому, что я хочу (брать данные и делать CSV, тогда как у меня есть CSV и я хочу таблицы) Или они берут файл и читают из файла, а не просто переменную, котораяимеет информацию. Я не совсем уверен, если это что-то меняет или ответ - обрабатывать $ response как файл.

1 Ответ

0 голосов
/ 22 октября 2019

Следующее сгенерирует сообщение электронной почты в формате HTML из ваших данных:

<?php
$to = "somebody@example.com, somebodyelse@example.com";
$subject = "HTML email";

$messagePart1 = "<html>
<head>
<title>Feedback on your website</title>
</head>
<body>

<table>";

$x = 1;

while($x <= $dataArray.length) {
    $tableData .= "<tr>
    <th>" . $dataArray => $fieldname . "</th>
    <td>" . $dataArray => $data . "</td>
    </tr>";
    $x++;
}


$messagepart2 = "</table>
    </body>
    </html>";

$message = $messagePart1 . $tableData . $messagePart2;

// 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: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";

mail($to,$subject,$message,$headers);
?>

Используйте эту информацию, чтобы открыть и прочитать ваш CSV-файл: Цикл через csv с fgetcsv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...