invio email con dati formattati

Dovrei fare in modo di inviare dal sito dati che siano visualizzati nel corpo dell'email in modo formattato.

Quindi con parti del testo in grassetto, sfondo colorato e font a mio piacere.

Il codice a cui dovrei applicare i tag più o meno è questo:

$message.="Dati utente:\n\n

Nome utente: $nome\n

Ora di accesso: $ora\n";

$from = "admin@localhost";

$headers = "FROM: $from\n";

$headers .= "Return-Path: $from\n";

if(isset($_SESSION['mail']))

{ echo "<br>";

}

else {

mail($a, $subject, $message, $headers);

$_SESSION['mail'] = true;

}

ovviamente mi riferisco a $message.

Nel manuale php ho letto questo:

/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */

$intestazioni  = "MIME-Version: 1.0\r\n";

$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

Ho provato e riprovato ma l'emal me la spedisce senza formattazione html (con i tag visibili nel corpo dell'emal come codice).

Potete aiutarmi?

ps: x gianni: la faccenda delle sessioni funziona! O0 O0

inviato 9 anni fa
frankphp
X 0 X

riporta esattamente il codice che stai usando, non quello da modificare

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

riporta esattamente il codice che stai usando, non quello da modificare

 :bye:

scusa hai ragione, è che l'avevo cancellato.

Più o meno era questo:

$a="newuser@localhost";
$subject = "Invio dati dal sito";

$message.="
<html>
<body>
<b>Dati utente.</b><br><br>
<b>Nome utente:</b> $nome<br>
<b>Ora di accesso:</b> $ora<br>
</body>
</html>";

$from = "admin@localhost";
$headers = "FROM: $from\n";
$headers .= "Return-Path: $from\n";

$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";

if(isset($_SESSION['mail']))
{ echo "<br>"; 
}
else {
mail($a, $subject, $message, $headers, $intestazioni);
$_SESSION['mail'] = true;
}

ci vorrebbe anche i table e compagnia bella ma adesso devo fare in modo che funzioni, poi penso ad abbellire il tutto.

Grazie

risposto 9 anni fa
frankphp
X 0 X

scusate, allora cosa è che non va?

Grazie

risposto 9 anni fa
frankphp
X 0 X

anche qui ho risolto.

C'era un codice nella funzione mail del manuale php che ho copiato e poi adattato alle mie esigenze.

Grazie e ciao

risposto 9 anni fa
frankphp
X 0 X

qual'era l'errore?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
qual'era l'errore?

non ci sono stato troppo a ragionarci sopra (anche perché non sono esperto di queste cose): questo

è il codice dal quale ho scremato quello che mi serviva:

# -=-=-=- PHP FORM VARIABLES (add as many as you would like)

$name = $_POST["name"];
$email = $_POST["email"];
$invoicetotal = $_POST["invoicetotal"];

# -=-=-=- MIME BOUNDARY

$mime_boundary = "----Your_Company_Name----".md5(time());

# -=-=-=- MAIL HEADERS

$to = "$email";
$subject = "This text will display in the email's Subject Field";

$headers = "From: Our Company <company@ourcompany.com>\n";
$headers .= "Reply-To: Our Company <company@ourcompany.com>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";

# -=-=-=- TEXT EMAIL PART

$message = "--$mime_boundary\n";
$message .= "Content-Type: text/plain; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";

$message .= "$name:\n\n";
$message .= "This email is to confirm that \"Our Company\" has received your order.\n";
$message .= "Please send payment of $invoicetotal to our company address.\n\n";
$message .= "Thank You.\n\n";

# -=-=-=- HTML EMAIL PART
 
$message .= "--$mime_boundary\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";

$message .= "<html>\n";
$message .= "<body style=\"font-family:Verdana, Verdana, Geneva, sans-serif; font-size:14px; color:#666666;\">\n";
$message .= "$name:<br>\n";
$message .= "<br>\n";
$message .= "This email is to confirm that \"Our Company\" has received your order.<br>\n";
$message .= "Please send payment of $invoicetotal to our company address.<br>\n\n";
$message .= "<br>\n";
$message .= "Thank You.<br>\n\n";
$message .= "</body>\n";
$message .= "</html>\n";

# -=-=-=- FINAL BOUNDARY

$message .= "--$mime_boundary--\n\n";

# -=-=-=- SEND MAIL

$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? "Mail sent" : "Mail failed";

..saranno le istruzioni "speciali" aggiunte in header o $message.

Secondo te?

Ciao

risposto 9 anni fa
frankphp
modificato 9 anni fa
X 0 X

non so che dirti, comunque per email in HTML o con allegati non uso la funzione nativa di PHP ma mi affido a librerie esterne come PHPMailer o il componente mail dello Zend Framework. Il loro utilizzo è estremamente semplice e non devi preoccuparti dei dettagli.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

non so che dirti, comunque per email in HTML o con allegati non uso la funzione nativa di PHP ma mi affido a librerie esterne come PHPMailer o il componente mail dello Zend Framework. Il loro utilizzo è estremamente semplice e non devi preoccuparti dei dettagli.

 :bye:

phpmailer?

cos'è? dammi qualche dettaglio. Mi interessa, grazie

risposto 9 anni fa
frankphp
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda