mail con allegato

dopo aver generato un file txt dovrei mandarlo via mail ad un'indirizzo di posta che trovo in un  file_adr.txt come allegato. non so' come fare.

grazie

inviato 10 anni fa
ventrix
X 0 X

Il modo più veloce è quello di utilizzare una classe di nome PHPMailer, la trovi quì:

http://phpmailer.sourceforge.net/

Sul sito troverai diversi esempi che ti mostrano come inviare email con attachment.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie

provo a vedere

risposto 10 anni fa
ventrix
X 0 X

scusa ma la mia ignoranza è veramente notevole.

che ci devo fare con:

class.phpmailer.php

e con:

class.smtp.php

devo modificare il php.ini?

se si, dove e come

grazie per la pazienza

risposto 10 anni fa
ventrix
X 0 X

nessuna modifica al php.ini

Copia quei due file nella stessa cartella in cui sono i tuoi script. Per inviare una mail con l'attachment ti basta realizzare uno scirpt di questo tipo:

<?php
require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From     = "mionome@mittente.it";
$mail->FromName = "Pinco Pallino";

$mail->AddAddress("destinatario@dominio.com", "Nome destinatario");
$mail->Subject = "Oggetto della mail";
$mail->Body    = "testo del corpo della mai";
$mail->AddAttachment("nome_file.jpg"); 
$mail->Send();
?>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ho copiato i 2 file in c:\web, ho fatto un include dello script che tu mi hai dato e non fà nulla.

dove sbaglio?

:-[

risposto 10 anni fa
ventrix
X 0 X

ma lo stai provando in locale?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si, è un programma che gira su postazioni singole

risposto 10 anni fa
ventrix
X 0 X

ma non hai installato un sever SMTP, vero? Windows o Linux?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

no non ho installato nulla.

per mandare la posta uso normalmente outlook espress ed anche in questo caso vorrei utilizzarlo.

grazie

risposto 10 anni fa
ventrix
X 0 X

non ho nessuna speranza di riuscire a mandare la posta, vero?

ciao

risposto 10 anni fa
ventrix
X 0 X

Per inviare una mail serve un server SMTP ed è necessario che PHP sappia "dove sia". L'accesso ad un server SMTP viene comunemente offerto a tutti i possessori di un indirizzo email. Potresti quindi usare quello che già usi in outlook per inviare la posta. Il problema è che PHP non supporta l'autenticazione per l'accesso al server SMTP, quindi se il tuo server SMTP richiede nome e password allora è inutilizzabile con PHP.

Se si ha a disposizione un server SMTP che non richiede autenticazione basta modificare il php.ini alle righe:

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

se il server è sulla stessa macchina del PHP allora "localhost" va bene, altrimenti bisogna mettere il nome della macchina in cui risiede (es. smtp.tin.it). Normalmente la porta è sempre la 25.

Che fare se non si ha a disposizione un server SMTP che non richiede autenticazione? Ci sono 2 strade:

1) installarsene uno sulla propria macchina, configurarlo in modo che non richieda autenticazione e impostare nel php.ini "SMTP = localhost". e ne segnalo uno gratuito e che non necessita di configurazione:

http://www.softstack.com/freesmtp.html

2) PHPmailer ha la possibilità di inviare una mail senza usare la funzione mail() di PHP ma connettendosi direttamente ad un server SMTP. PHPmailer è anche in grado di autenticarsi (con nome e password) sul server SMTP quindi risolve i limiti di PHP. Potresti quindi dire a PHPmailer di inviare la mail collegandosi direttamente ad un server SMTP (es. smtp.tin.it) fornendogli i dati per l'autenticazione. Ecco l'esempio tratto dal sito di PHPmailer che fa uso di una connessione diretta con l'SMTP:

<?php
require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();                                   // send via SMTP
$mail->Host     = "smtp1.site.com;smtp2.site.com"; // SMTP servers
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "jswan";  // SMTP username
$mail->Password = "secret"; // SMTP password

$mail->From     = "from@email.com";
$mail->FromName = "Mailer";
$mail->AddAddress("josh@site.com","Josh Adams"); 
$mail->AddAddress("ellen@site.com");               // optional name
$mail->AddReplyTo("info@site.com","Information");

$mail->WordWrap = 50;                              // set word wrap
$mail->AddAttachment("/var/tmp/file.tar.gz");      // attachment
$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); 
$mail->IsHTML(true);                               // send as HTML

$mail->Subject  =  "Here is the subject";
$mail->Body     =  "This is the <b>HTML body</b>";
$mail->AltBody  =  "This is the text-only body";

if(!$mail->Send())
{
   echo "Message was not sent <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";
?>

Queste sono le istruzioni che attivano il collegamento diretto e l'autenticazione all'SMTP:

$mail->IsSMTP();                                   // send via SMTP

$mail->Host     = "smtp1.site.com;smtp2.site.com"; // SMTP servers

$mail->SMTPAuth = true;     // turn on SMTP authentication

$mail->Username = "jswan";  // SMTP username

$mail->Password = "secret"; // SMTP password

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

non c'ho capito nulla.

in php.ini c'è SMTP=localhost

ho scaricato free SMTP servere l'ho installato senza cambiare nulla.

ho fatto lo script:

<?php

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();                                   // send via SMTP

$mail->Host     = "localhost;localhost"; // SMTP servers

$mail->SMTPAuth = true;     // turn on SMTP authentication

$mail->Username = "ventrix";  // SMTP username

$mail->Password = "xxxxxx"; // SMTP password

$mail->From     = "ventrigliaantoni@alice.it";

$mail->FromName = "Ventrix";

$mail->AddAddress("ventrigliaantoni@alice.it","Corrado");

$mail->AddReplyTo("ventrigliaantoni@alice.it","Information");

$mail->WordWrap = 50;                              // set word wrap

$mail->AddAttachment("");      // attachment

$mail->IsHTML(true);                               // send as HTML

$mail->Subject  =  "Here is the subject";

$mail->Body     =  "This is the <b>HTML body</b>";

$mail->AltBody  =  "This is the text-only body";

if(!$mail->Send())

{

   echo "Message was not sent <p>";

   echo "Mailer Error: " . $mail->ErrorInfo;

   exit;

}

echo "Message has been sent";

?>

provo a mandare la mail a me stesso e mi dà:

Message has been sent

ma non ricevo nulla su outlook.

La username e password di questo script dove le devo mettere?

Su free SMTP server non ci sono?

Devo configurare altro?

cosa ho sbagliato?

risposto 10 anni fa
ventrix
X 0 X

grazie gianni,

ci sono riuscito.

i problemi erano 2.

1) non avevo seguito esattamente quello che tu avevi scritto.

2) provavo a mandarlo a me stesso, e ho visto che cio' non funziona.

 ;D ;D ;D

 O0 O0

 :bye: :bye:

risposto 10 anni fa
ventrix
X 0 X

Mi ero accorto che non avevi letto con attenzione quello che ti avevo scritto, ecco perché non ti ho risposto subito  :coolsmiley:

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda