2010-12-02 6 views
1

J'ai déjà utilisé PHP pour envoyer des emails mais jamais pour envoyer une page HTML complète d'une autre source et je me demande par où commencer et quelques autres choses. J'ai fait un peu de recherche, mais ma confusion ne l'éclaircit pas.PHP envoyant une page HTML EMAIL depuis un site web

Est-ce que je reçois directement le contenu de la page Web et l'envoie ou puis-je utiliser un paramètre pour simplement utiliser une URL? Quelle est la méthode la plus simple que je pourrais utiliser et quelqu'un pourrait-il me montrer un exemple? Y a-t-il des risques à envoyer un e-mail comme celui-ci pour dire ... 5000 personnes et comment puis-je modifier les données d'en-tête avec un lien de retour à la source de l'URL?

+1

voulez-vous envoyer un lien vers la page, ou voulez-vous envoyer la source de la page? – drudge

+0

Si vous êtes préoccupé par les considérations réglementaires, l'envoi à une liste peut être géré par un service tel que [Constant Contact] (http://www.constantcontact.com/). Ensuite, ils peuvent gérer des choses comme des opt-outs, etc. – zanlok

+0

Je suis un peu inquiet au sujet de la réglementation, mais pour le moment, je commence à envoyer la source des pages par courriel. – Chenelle

Répondre

3

La ligne suivante récupère le contenu d'une page HTML.

$mail->MsgHTML(file_get_contents('contents.html')); 

Rendez-vous ici pour plus de détails: http://phpmailer.worxware.com/index.php?pg=exampleagmail

require_once('../class.phpmailer.php'); 
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch 

$mail->IsSMTP(); // telling the class to use SMTP 

try { 
    $mail->Host  = "mail.yourdomain.com"; // SMTP server 
    $mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 
    $mail->SMTPAuth = true;     // enable SMTP authentication 
    $mail->SMTPSecure = "tls";     // sets the prefix to the servier 
    $mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
    $mail->Port  = 587;     // set the SMTP port for the GMAIL server 
    $mail->Username = "[email protected]"; // GMAIL username 
    $mail->Password = "yourpassword";   // GMAIL password 
    $mail->AddReplyTo('[email protected]com', 'First Last'); 
    $mail->AddAddress('[email protected]', 'John Doe'); 
    $mail->SetFrom('[email protected]', 'First Last'); 
    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->Subject = 'PHPMailer Test Subject via mail(), advanced'; 
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically 
    $mail->MsgHTML(file_get_contents('contents.html')); 
    $mail->AddAttachment('images/phpmailer.gif');  // attachment 
    $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment 
    $mail->Send(); 
    echo "Message Sent OK\n"; 
} catch (phpmailerException $e) { 
    echo $e->errorMessage(); //Pretty error messages from PHPMailer 
} catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 
+0

Je pense qu'il veut obtenir le HTML d'une URI web. – zanlok

+0

Vous pouvez utiliser file_get_contents pour obtenir des URL externes. http://php.net/manual/fr/function.file-get-contents.php. Le seul problème est que certains hôtes désactivent cette fonction. –

+0

Ah! Excellent! J'ai répondu à la plupart de mes questions en une seule réponse!file_get_contents <3 Merci Ives! Je suis toujours un peu curieux au sujet des risques d'envoyer autant de courriels, de suggestions? – Chenelle

1

Disclaimer: Je ne peux pas encore des commentaires, donc s'il vous plaît pardonnez-ce être une "réponse".

Je pense que vous allez probablement devoir clarifier vos objectifs ici.

Il semble que ce que vous voulez faire est d'abord construire un grattoir de base, sauf si vous avez accès au fichier html brut. Fondamentalement, vous pouvez utiliser fopen ("Url", "r"), fsockopen ("url", 80), ou utiliser un gestionnaire curl pour soumettre la demande de page. À partir de là, en fonction de votre méthode, vous liriez la réponse et généreriez un courrier électronique HTML ou en plusieurs parties.

En ce qui concerne l'ajout d'un lien vers l'en-tête de l'e-mail, vous pouvez le faire, mais j'ai le sentiment que cela ne va pas faire ce que vous voulez. La façon de le faire dépendra de la façon dont vous décidez d'envoyer l'e-mail.

0

La réponse de Ives est agréable.

Il y a un truc que vous voulez vraiment considérer avec l'envoi d'une page html.

Les e-mails HTML et les pages HTML sont deux écoles totalement différentes.

Les e-mails HTML vous ramènent 10 ans en arrière (bonjour les tables!) Dans ce que vous pouvez faire pour prendre en charge autant de clients de messagerie que possible.

Il est très probable une chose email-une-page droite regardera la merde totale sur l'e-mail du destinataire ..

et vous avez à considérer, etc stylesheets ..

enrobage
+0

Ohhh, alors je devrais demander à la personne que je suis en train de coder de créer une page web contenant seulement des images et des tableaux. – Chenelle

Questions connexes