Ciao a tutti!
Su internet, ho trovato due codici php.
Il primo codice, serve a spedire delle email, in formato testo o Html a molte persone.
il secondo codice, serve ad inviare email con allegati.
Vorrei unirli per poter spedire newsletter con un allegato.

Questi sono i due codici:
<?
session_start();
include_once('Swift/Swift.php');
include_once('Swift/Swift/Connection/SMTP.php');
require_once("../config.php");

$fp = fopen("../$db_file", "r");
$recipients = fread($fp, filesize("../$db_file"));
$recipients = explode(",", $recipients);
$mail_type = $_SESSION[type];
$mail_subject = $_SESSION[subject];
$mail_from = "$admin_name <$admin_email>";
$mail_body = stripslashes($_SESSION[message]);

//print_r($recipients);
//print $mail_from;
//print $mail_subject;
//print $mail_type;

if($use_smtp == 'on')
{
$mailer = new Swift(new Swift_Connection_SMTP($smtp_host));

if ($mailer->isConnected())
{
if ($mailer->authenticate($smtp_username, $smtp_password))
{
if($mail_type == 'text')
{
if($unsubscribe_link == 'on')
$mail_body = "$mail_body\n--------------------------------------------\ncliccate sul seguente link per cancellarsi\n$site_url/$opennewsletter_dir/index.php?action=unsubscribe\n--------------------------------------------\n";

$mailer->addPart($mail_body);
}

if($mail_type == 'html')
{
if($unsubscribe_link == 'on')
$mail_body = "$mail_body
<hr>click here to unsubscribe</font><hr>";

$mailer->addPart($mail_body, 'text/html');
}

if($mailer->send($recipients, $mail_from, $mail_subject))
print "<font face='arial' size='2'>La mail è stata inviata...</font>";
else
print "<font face='arial' size=2>La mail non è stata inviata...</font>";
$mailer->close();
}
else
{
print "<font face='arial' size=2>Impossibile eseguire l'autenticazione del server smtp...</font>";
}
}
else
{
print "<font face='arial' size=2>Impossibile connettersi al server SMTP...</font>";
}
}
else
{
foreach($recipients as $recipient)
{
if($mail_type == 'text')
{
if($unsubscribe_link == 'on')
$body = "$mail_body\n--------------------------------------------\ncliccate sul seguente link per cancellarsi\n$site_url/$opennewsletter_dir/index.php?action=unsubscribe\n--------------------------------------------\n";

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/plain; charset=\"$charset\"" . "\r\n";
$headers .= "Return-Path: $mail_from" ." \r\n";
$headers .= "Reply-To: $mail_from" . "\r\n";
$headers .= "From: $mail_from" . "\r\n";
}

if($mail_type == 'html')
{
if($unsubscribe_link == 'on')
$body = "$mail_body
<hr>clicca qui per cancellarti</font><hr>";

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=\"$charset\"" . "\r\n";
$headers .= "Return-Path: $mail_from" ." \r\n";
$headers .= "Reply-To: $mail_from" . "\r\n";
$headers .= "From: $mail_from" . "\r\n";
}

if(mail($recipient, $mail_subject, $body, $headers))
print "<font face='arial' size='2'>mail inviata a $recipient...</font>
";
else
print "<font face='arial' size='2'>mail non è stata inviata a $recipient...</font>
";
}
}
?>
Email con allegato:

<?php
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$mittente = $_POST['mittente'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];

// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];

// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";

// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($allegato))
{
// Apro e leggo il file allegato
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);

// Adatto il file al formato MIME base64 usando base64_encode
$data = chunk_split(base64_encode($data));

// Genero il "separatore"
// Serve per dividere, appunto, le varie parti del messaggio.
// Nel nostro caso separerà la parte testuale dall'allegato
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Aggiungo le intestazioni necessarie per l'allegato
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " boundary=\"{$mime_boundary}\"";

// Definisco il tipo di messaggio (MIME/multi-part)
$msg .= "This is a multi-part message in MIME format.\n\n";

// Metto il separatore
$msg .= "--{$mime_boundary}\n";

// Questa è la parte "testuale" del messaggio
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $messaggio . "\n\n";

// Metto il separatore
$msg .= "--{$mime_boundary}\n";

// Aggiungo l'allegato al messaggio
$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename=\"{$allegato_name}\"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";

// chiudo con il separatore
$msg .= "--{$mime_boundary}--\n";
}
else
{
$msg = $messaggio;
}

// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
{
echo "

Mail inviata con successo!</p>";
}else{
echo "

Errore!</p>";
}

?>
A mio parere, una buona parte del secondo codice, può essere semplicemente copiato nel primo.... ma ho dei dubbi su come modificare la parte che è colorato di rosso.
Mi potete dare una mano?