envoi données mysql par mail

omzen

Membre junior
26 Septembre 2008
88
6
42
Nice
www.coeuraccords.net
Bonjour à tous et à toutes,

Je suis confronté à mon ignorance :
Les internautes de mon site internet Cie Le Coeur Accords peuvent s'inscrire à notre newsletter. Jusque là, tout va bien.
Je gère les newsletters moi-même, (petite structure) or je dois aller chercher dans ma base de données mysql ces données justement.

Ainsi, je cherche à recevoir ces mêmes données par mail sans pour autant effacer la base de données que je trouve pratique.

Je comprends le html et le css, mais le php c'est du charabia.

quelqu'un saurait-il m'accompagner dans cette réalisation s'il vous plaît ?

Ci-dessous le code php de la page :

Bloc de code:
<?php
function log_message_stacks_in_132_page60($string) {
    echo "<script type='text/javascript'>console.log('$string');</script>";
    return;
}


function process_actions_stacks_in_132_page60($action, $email, $first_name="", $last_name="", $custom="", $customtwo="") {

    if($action === 'export' or filter_var($email, FILTER_VALIDATE_EMAIL)) {

            
        require_once('index_files/postoffice-lib/PostOfficeAPI.php');
        $postoffice_conn = new PostOfficeAPI('db429305573.db.1and1.com', 'dbo429305573', 'password', 'db429305573', 'changeme', 'index_files');

        switch ($action) {    
            case 'add':
                $postoffice_conn->add_subscriber($email, $first_name, $last_name, $custom, $customtwo);
                break;
                
            case 'remove':
                $postoffice_conn->remove_subscriber($email, $first_name, $last_name, $custom, $customtwo);
                break;

            case 'export':
                if (isset($_GET["auth"])) {
                    $postoffice_conn->export_subscribers($_GET["auth"]);
                }
                elseif (preg_match('/^(changeme)\@export\.csv$/', $email, $matches)) {
                    $postoffice_conn->export_subscribers($matches[1]);
                }
                break;
                
            default:
                break;
        }
/*   
*/
    }
    return;
}
/* Process Requests */
if ( isset($_POST['action']) ) {
    $email         = isset($_POST['email'])       ? $_POST['email']      : '';
    $first_name = isset($_POST['first_name']) ? $_POST['first_name'] : '';
    $last_name     = isset($_POST['last_name'])  ? $_POST['last_name']  : '';
    $custom     = isset($_POST['custom'])     ? $_POST['custom']  : '';
    $customtwo     = isset($_POST['customtwo'])  ? $_POST['customtwo']  : '';
    
    if (preg_match('/^changeme\@export\.csv$/', $email)) {
        process_actions_stacks_in_132_page60('export', $email, $first_name, $last_name, $custom, $customtwo);
    }
    process_actions_stacks_in_132_page60($_POST['action'], $email, $first_name, $last_name, $custom, $customtwo);
}
elseif ( isset($_GET['action']) ) {
    $email         = isset($_GET['email'])      ? $_GET['email']        : '';
    $first_name = isset($_GET['first_name']) ? $_GET['first_name']  : '';
    $last_name     = isset($_GET['last_name'])  ? $_GET['last_name']   : '';
    $custom     = isset($_GET['custom'])     ? $_GET['custom']  : '';
    $customtwo     = isset($_GET['customtwo'])  ? $_GET['customtwo']  : '';

    process_actions_stacks_in_132_page60($_GET['action'], $email, $first_name, $last_name, $custom, $customtwo);
}
?>

Merci pour votre attention

MiCkael
 

sanji~

Membre junior
28 Mai 2007
26
0
Bonjour,

Pour faire simple et sans partir dans l'explication de la programmation orientée objet, il suffit d'implémenter au sein de votre switch, un envoi d'email avec la fonction mail() de PHP (attention, chez certains hébergeurs cette fonction est désactivée.)

Bloc de code:
case 'remove':
     $postoffice_conn->remove_subscriber($email, $first_name, $last_name, $custom, $customtwo);
break;

En revanche, selon l'application que vous avez d'installé, je vous suggère de ne pas modifier le comportement initial. D'autant plus que théoriquement un abonné à une newsletter doit pouvoir se désinscrire à tout moment.

Vous pouvez en revanche, conserver une trace des personnes désinscrites en vous envoyant un mail auparavant. Cela reviendrait à implémenter un envoi d'email juste avant la suppression de la ligne dans votre base de données :

Bloc de code:
case 'remove':
     mail('monemail@domain.tld', 'Nouvelle désinscription', 'L\'abonnée : '.$email.' vient de se désinscrire de la newsletter.');
     $postoffice_conn->remove_subscriber($email, $first_name, $last_name, $custom, $customtwo);
break;

Pour plus d'informations sur la fonction mail, je vous invite à consulter la documentation PHP mail

Si cette dernière n'est pas activée chez votre hébergeur, vous pouvez également réaliser un fichier .log sur votre serveur qui garderait la trace de la personne qui se désinscrit.

Je ne sais pas si cela peut vous aider.
Cordialement
 

omzen

Membre junior
26 Septembre 2008
88
6
42
Nice
www.coeuraccords.net
Bonjour Sanji~

C'est incroyable comme c'est efficace : merci. Je reçois un mail de CGI-Mailer ;-)

En regardant le lien que tu m'as donné, j'ai vu qu'on pouvait ajouter un $headers.

Penses-tu que je puisse remplacer "cgi-mailer" par mon adresse mail ?

Merci pour ton aide
 

sanji~

Membre junior
28 Mai 2007
26
0
Bien sur, il est possible de spécifier dans les en-têtes (headers) l'adresse d'envoi et de réponse :

Bloc de code:
$headers = 'From: webmaster@example.com' . "\r\n" .
     'Reply-To: webmaster@example.com' . "\r\n";

mail('monemail@domain.tld', 'Nouvelle désinscription', 'L\'abonnée : '.$email.' vient de se désinscrire de la newsletter.', $headers);
 

omzen

Membre junior
26 Septembre 2008
88
6
42
Nice
www.coeuraccords.net
Parfait !

J'ai même rajouté le charset utf pour voir les accents - soucis du détail oblige :)
Bloc de code:
$headers = 'From: contact@coeuraccords.net' . "\r\n" .
    'Reply-To: contact@coeuraccords.net' . "\r\n" .
    'Content-type: text/html; charset=utf-8' . "\r\n";
Merci pour ton éclairage ô combien précieux l'ami !!

Au plaisir,

MiCkaël