Inviare mail con php

Ciao a tutti.

Volevo chiedervi se potete indirizzarmi a qualche tutorial ben fatto o darmi qualche consiglio su come inviare mail con php.

Dovrei realizzare, all'interno di una intranet, un form per inviare mail (con un allegato) tramite php.

Come posso realizzarlo? Sfruttando Outlook2003? C'è la possibilità di richiamarlo tramite php passandogli il testo inserito nella form e un eventuale allegato? O devo inviare tramite un server di posta?

In realtà non ho un server di posta sul pc dove è installato apache e php, le mail vengono sempre inviate nel modo tradizionale tramite Outlook 2003 che si collega al mailserver aziendale, con php mi ci posso connettere stile outlook e inviare mail e allegati direttamente da pagina web senza aprire outlook?

Non so da dove inziare ...  :-[ questo è il mio problema.

Mario

inviato 11 anni fa
stone
X 0 X

Il PHP sa inviare email senza dover appoggiarsi a programmi esterni.

La funzione che serve usare è mail, per inviare email semplici ad esempio basta la seguente riga:

mail("nome@dominio.it", "Oggetto della mail", "Testo della mail \n altra riga \n altra riga");

se si è su windows è necessario impostare la direttiva SMTP nel php.ini inserendo l'indirizzo del server SMTP da usare per l'invio della mail. Poiché però PHP si collegherà a tale server senza inviare dati di autenticazione, può capitare che il server non accetti di inviare la mail.

Per l'invio di mail con allegati la cosa si complica. Per questo scopo ti consiglio di utilizzare una classe: PHPMailer.

Si tratta di codice da includere nei propri script che facilita notevolmente l'invio di email complesse. Inoltre può dialogare direttamente con i server SMTP, senza affidare questa operazione al PHP. In questo modo è in grado di usare server che richiedono autenticazione. Sul sito di PHPMailer trovi diversi esempi.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ciao.

Io ho inserito nel file php.ini l'indirizzo del server mail che vedo comparire nei settaggi dell'account utente di Outlook2003 sotto la dicitura "Server di Microsoft Exchange".

Ma credo di aver fatto una idiozia ...  ::)

Infatti non va ...

Forse provo con un account tipo GMAIL o altri ... Solo che non so come faccio a passargli anche nomeutente e password

risposto 11 anni fa
stone
X 0 X

come ti ho detto PHP non invia le informazioni di autenticazione durante l'accesso al server SMTP pertanto se queste sono necessarie la procedura non funzionerà.

PHPMailer invece contiene del codice per comunicare direttamente con un server SMTP, inviando anche nome e password. Vedrai che risolverà tutti i problemi. Inoltre gestisce anche gli attachment e le mail in HTML

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ciao.

Ho scaricato un tutorial in inglese molto dettagliato su PHPMailer su www.phpfreaks.com

(http://www.phpfreaks.com/tutorials/130/0.php).

Ho creato il file config.php seguendo le varie specifiche e usando l'smtp di gmail, la sua porta che è la 478 ma non c'è verso.

Questi i miei passaggi:

- collocata la directory 'phpmailer' nella seguente document root: ./documenti_root/lib/phpmailer;

- creato il file MailClass.inc dentro ../lib;

- creato il seguente file config.php collocandolo all'interno della document_root:

<?php

// Configuration settings for My Site

// Email Settings
$site['from_name'] = 'Mario Stone'; // from email name
$site['from_email'] = 'xxxx@libero.it'; // from email address

// Just in case we need to relay to a different server,
// provide an option to use external mail server.
$site['smtp_mode'] = 'enabled'; // enabled or disabled
$site['smtp_host'] = 'smtp.gmail.com';
$site['smtp_port'] = '465';
$site['smtp_username'] = 'xxxxx.xxxx@gmail.com';
$site['smtp_password'] = 'xxxxxx';
?>

- preso il seguente file php (mailtest.php) di esempio e copiato nella documentation_root:

<?php

// Grab our config settings
require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');

// Grab the FreakMailer class
require_once($_SERVER['DOCUMENT_ROOT'].'/lib/MailClass.inc');

// instantiate the class
$mailer = new FreakMailer();

// Set the subject
$mailer->Subject = 'This is a test';

// Body
$mailer->Body = 'This is a test of my mail system!';

// Add an address to send to.
$mailer->AddAddress('mario.stone@libero.it', 'Mario Sasso');

if(!$mailer->Send())
{
  echo 'There was a problem sending this mail!';
}
else
{
  echo 'Mail sent!';
}
$mailer->ClearAddresses();
$mailer->ClearAttachments();
?>

Con il browser ho avviato tale file ma mi da sempre l'errore "There was a problem sending this mail".

Inoltre su Goolgle nei settaggi dei client mail, si legge che la porta smtp può essere anche la 578, se provo a mettere tale porta nel file config.php mi restituisce l'errore che non riesce a connettersi alla porta 578 di smtp.

Quindi a mio avviso c'è un tentativo di connessione. Se metto la porta 465 restituisce solo la dicitura

"There was a problem sending this mail".

Ho provato anche con un account di Fastweb (che ha la porta smtp predefinita 25) ma non va.

Francamente non so più che pensare.  :idiot:

Ho sempre riavviato il server Apache dopo i cambiamenti ma nulla da fare...  :(

Credo di aver collocato PHPMailer nella giusta posizione, gli script richiamati in modo corretto altrimenti mi avrebbe dato altri tipi di errori.

Che posso fare?

Mario

risposto 11 anni fa
stone
X 0 X

metti un

echo $mailer->ErrorInfo;

al posto di

echo 'There was a problem sending this mail!';

e vedi che errore ti viene restituito

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ti ringrazio Gianni.

Sono riuscito a risolvere.

Trovandomi all'interno di una intranet aziendale non scrivevo l'smtp in modo corretto: una parte dell'smtp era collegata al mio username per la fase di login.

Ora funziona.

Ancora grazie

Ciao

Mario

 :bye:

risposto 11 anni fa
stone
X 0 X
Per l'invio di mail con allegati la cosa si complica. Per questo scopo ti consiglio di utilizzare una classe: PHPMailer.

Mi aggancio (anche se un po' in ritardo)...

PHPMailer (come mail()) compone il messaggio e lo invia (incluso l'allegato nel caso di PHPMailer)...

Ma se io avessi la necessità che all'utente si aprisse la finestra "crea nuovo messaggio" parzialmente pre-complilata del programma di posta? (OE oppure Thunderbird) Un po' come fa il "mailto:"...

Usando <A HREF="mailto:xxx@yyy.zz"> è possibile specificare oggetto, destinatari Cc, Ccn, testo... non è possibile specificare anche un allegato?

 :bye:

risposto 10 anni fa
myne.it
X 0 X

no  :dunno:

 :bye:

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