PHPMailer étant tellement simple et suffisamment documenté que je vous en la découvrir par vous même. Par contre je vous laisse les astuces, là ou j'ai perdu 5 minutes à trouver la bonne réponse sur le net.

PhpMailer et les accents

Selon l'encodage, il faut redéfinir le Charset pour ne pas avoir dans les caractères européens accentués tels que les é à ô, etc....

$phpMailer= new PHPMailer();
$phpMailer->CharSet = 'UTF-8';	// Gestion du charset et des accents (par défaut ISO-8859-1)

PhpMailer et l'undelivered message (Return-Path to Sender)

Pour recevoir un mail (de non délivrance) si le compte mail du destinataire n'existe pas ou n'est pas utilisable (quota plein), vous pouvez le configurer via l'attribut "Sender" qui configure l'attribut "Return-Path: " du mail.

$phpMailer= new PHPMailer();
$phpMailer->Sender = $mail_retour;	// Sender email (Return-Path)

PhpMailer, gestion des erreurs (d'envoi et de remplissage des attributs obligatoires)

if(!$phpMailer->Send()) {
   echo "Mail non envoyé, erreur : " . $phpMailer->ErrorInfo; // La dernière erreur
} else {
   echo "Mail envoyé avec succès.";
}

PhpMailer, catcher les exception

Pour récupérer les exception, il faut passer true dans le constructeur.

$phpMailer = new PHPMailer(true); // permet d'utiliser les bloc try/catch pour phpmailerException et Exception 
try {
  $phpMailer->SetFrom('name@yourdomain.com', 'Place O Web');
  $phpMailer->AddReplyTo('repondez.moi@votredomaine.com', 'PlaceOweb Reply');
  $phpMailer->AddAddress('vers.le.gars@autredomain.come', 'Nom si connu');
  $phpMailer->Subject = "Test d'envoi de mail avec PHPMailer";
  $phpMailer->AltBody = 'Pour voir ce message, utilisez un client mail compatible HTML'; // optionnel - MsgHTML crée automatiquement un message alternatif
  $phpMailer->MsgHTML(file_get_contents('contenu.html'));
  $phpMailer->AddAttachment('xls/rapport.xls');      // attachement
  $phpMailer->Send();
  echo "Message envoyé !\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); // Jolis messages d'erreur de PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); // Les autres message d'erreur (en dehors de PHPMailer)
}

Pour franciser les message d'erreur

$phpMailer->SetLanguage('fr');

PhpMailer, envoi par SMTP authentifié

$phpMailer->IsSMTP();
$phpMailer->SMTPSecure = "tls";
$phpMailer->Host = "smtp.placeoweb.com";
$phpMailer->SMTPAuth = true;
$phpMailer->Username = "noreply@placeoweb.com";
$phpMailer->Password = "monMOTdePASSE";

Débuger la connexion SMTP de PhpMailer

$phpMailer->SMTPDebug = true;

PhpMailer et les fichiers attachés (inline)

Comment inclure des images dans vos mails sans les récupérer depuis internet : PhpMailer Inline :

// Ajout de pièce jointe inline (dans le corps du message HTML) depuis un fichier
 
// 		void AddStringAttachment (string $string, string $filename, [string $encoding = 'base64'], [string $type = 'application/octet-stream'])
// 		bool AddStringEmbeddedImage (string $string, string $cid, [string $name = ''], [string $encoding = 'base64'], [string $type = 'application/octet-stream'])
 
// 		bool AddAttachment (string $path, [string $name = ''], [string $encoding = 'base64'], [string $type = 'application/octet-stream'])		
// 		bool AddEmbeddedImage (string $path, string $cid, [string $name = ''], [string $encoding = 'base64'], [string $type = 'application/octet-stream'])
 
// Ajout de pièce jointe depuis une chaine de caractère
 		$phpMailer->IsHTML(true);
 		$phpMailer->AddStringEmbeddedImage($contenuBinaireDeLaPhoto,'idDeLaPhotoPourLeMessageHtml','nomDeLaPhoto.jpg');
 		$body .= '<br><hr>' . 'nomDeLaPhoto.jpg' . ' : <img src="cid:' . 'idDeLaPhotoPourLeMessageHtml' .'">';
 		$phpMailer->Body = $body;

PhpMailer et les fichiers en pièce jointe

Pour ajouter des fichiers en pièce jointe de votre mail :

// Ajout de pièce jointe depuis un fichier
$phpMailer->AddAttachment($path,$name,$encoding,$type);
 
// Ajout de pièce jointe depuis une chaine de caractère
$phpMailer->AddStringAttachment($string,$filename,$encoding,$type)

Ressources