Fig.1 Codice HTML del modulo di feedback
Puoi vedere come appare il modulo di feedback mostrato qui nello screenshot seguente.
Così modulo richiesto creato. E ora puoi passare alle questioni relative all'elaborazione e all'invio dei dati sotto forma di messaggio di posta elettronica.
Installazione della libreria PHPMailer
Come notato in precedenza, per inviare la posta utilizzeremo la libreria PHPMailer, che semplificherà notevolmente l'invio di posta elettronica tramite Protocollo SMTP con autorizzazione su un servizio di posta di terze parti.
Per installarlo è necessario scaricarlo file necessari. Questo può essere fatto dal servizio web GitHub utilizzando Composer (un gestore delle dipendenze dei pacchetti per PHP). Oppure scarica semplicemente i file necessari nel solito modo.
schermata 73
Di seguito è riportata la pagina del servizio web GitHub, dove è contrassegnato il collegamento al download regolare della libreria PHPMailer.
Oltretutto, ultima versione 6.0.7, che è stato salvato al momento della stesura di questo articolo, può essere scaricato dai materiali allegati.
In ogni caso, il file di archivio risultante dovrebbe essere decompresso, dopodiché la cartella PHPMailer-master estratta con tutto il suo contenuto dovrebbe essere posizionata nella root del sito. Allo stesso tempo, per semplicità, puoi rinominarlo PHPMailer. Di seguito è riportato il contenuto della cartella PHPMailer posta nella directory root del sito.
Quindi abbiamo installato la libreria PHPMailer. Dopodiché possiamo iniziare a creare uno script con il quale invieremo messaggi email dal nostro sito web.
Creiamo uno script per l'invio di posta tramite SMTP
Per comporre lo script è sufficiente utilizzare i consigli per l'utilizzo di PHPMailer riportati nella pagina GitHub, che abbiamo utilizzato in precedenza per scaricare la libreria.
In particolare indicano che all'inizio dello script è necessario importare le classi PHPMailer nello spazio dei nomi globale. E vengono fornite righe specifiche di codice corrispondente. Esistono anche esempi di utilizzo delle proprietà e dei metodi di PHPMailer, inclusa la possibilità di inviare posta tramite SMTP.
Ma se ciò non bastasse, puoi anche utilizzare la documentazione, che contiene una descrizione di tutte le proprietà e i metodi di questa libreria.
schermata 74
Di seguito è riportato il codice script per l'invio di posta dal modulo di feedback tramite SMTP con autorizzazione. Dove tutte le righe relative a PHPMailer sono fornite di spiegazione ed evidenziate con uno sfondo chiaro.
Il resto della parte, compresi i frammenti relativi alla ricezione e all'elaborazione dei dati dal modulo, che in precedenza dovevamo utilizzare in altri processori, è indicato da uno sfondo scuro. Sono stati discussi in dettaglio in precedenza in un articolo dedicato specificamente alle questioni relative all'ottenimento e alla verifica dei dati da un modulo in PHP. Dove abbiamo parlato anche della funzione utente universale per la convalida e l'elaborazione dei dati dei moduli simbolo_controllo().
Inseriremo questo script nello stesso file kontakty.php in cui abbiamo precedentemente creato il modulo di feedback.
//----Script per inviare posta tramite SMTP utilizzando PHPMailer----
//Importa le classi PHPMailer nello spazio dei nomi globale. Dovrebbero essere nella parte superiore dello script, non all'interno della funzione
utilizzo PHPMailer\PHPMailer\PHPMailer ;
utilizzo PHPMailer\PHPMailer\Eccezione ;
Se
(!vuoto($_POST["pulsante di contatto"])) (
$nome = $_POST["nome-contatto"];
$nome = simbolo_di_controllo ($nome, "Nome" , "1" , "/^+\z/iu" );
$e-mail = $_POST["e-mail-contatto"];
$email = simbolo_di_controllo ($email, "E-mail", "1" , "/^+@(+\.)+(2,6)\z/i");
$oggetto = $_POST["oggetto-contatto"];
$oggetto = simbolo_di_controllo ($oggetto, "Oggetto del messaggio" , "1" , "0" );
$commento = $_POST["commento-contatto" ];
$commento = simbolo_di_controllo ($commento, "Messaggio di testo", "1"
, "0"
);
Se
(!vuoto($GLOBALS["avviso" ])) (
$avviso = "I dati del modulo non sono stati inviati. Sono stati rilevati i seguenti errori:\n".$avviso;
includere"avviso.php";
altro
{
//Collegamento della libreria
richiedere"PHPMailer/src/PHPMailer.php" ;
richiedere"PHPMailer/src/Exception.php" ;
richiedere"PHPMailer/src/SMTP.php" ;
$posta = nuovo PHPMailer(); //Inizializzazione della classe
$da = " [e-mail protetta]"
; //Indirizzo email da cui viene inviata la lettera
$a = " [e-mail protetta]"
; //Indirizzo del destinatario
$posta -> isSMTP(); //Utilizza il protocollo SMTP
$mail -> Host = "smtp.yandex.ru" ; //Indirizzo del server di posta
$posta -> SMTPAuth = VERO
; //Abilita la modalità di autorizzazione
$mail -> Nome utente = " [e-mail protetta]"
; //Accedi da un dominio email collegato a un servizio email di terze parti (in questo caso, Yandex.Mail)
$posta -> Password = "27MrDon89" ; //Password per la posta del dominio
$posta -> SMTPSecure = "ssl"; //Protocollo di crittografia
$posta -> Porta = "465"; //Porta del server SMTP
$posta -> CharSet = "UTF-8"; //Codifica
$mail -> setFrom ($from, "Amministratore"); //Indirizzo e nome del mittente
$mail -> aggiungiIndirizzo ($to, "Amministratore"); //Indirizzo e nome del destinatario
$mail -> isHTML ( VERO
); //Imposta il formato email su HTML
$mail -> Oggetto = "Modulo di feedback inviato"; //Oggetto dell'email (intestazione)
$posta -> Corpo = "
Nome del mittente: $nome
Indirizzo del mittente: $e-mail
Soggetto del messaggio: $oggetto
Contenuto del messaggio: $commento
"
; //Contenuto del messaggio
$posta -> AltBody = "Testo lettera alternativa"; //E-mail alternativa se il client di posta elettronica non supporta il formato HTML
$posta -> SMTPDebug = 0; //Abilita il debug SMTP: 0 - disattivato (per l'uso normale), 1 = messaggi client, 2 - messaggi client e server
Se($posta -> invia()) (
$avviso = "Messaggio inviato"; //Emette un messaggio nella finestra di dialogo del browser relativo all'avvenuto invio della lettera
altro
{
$avviso = "Errore, l'e-mail non può essere inviata: ".$mail -> InformazioniErrore; //Emette un messaggio di errore
includere"avviso.php";
Fig.5 Script per l'invio di email tramite SMTP con autorizzazione
Come puoi vedere, tutte le righe direttamente correlate all'invio di un messaggio di posta elettronica, in cui sono specificati i metodi e le proprietà necessarie, sono accompagnate da commenti. Non ha quindi senso ripeterci, ma possiamo soffermarci solo su alcuni di essi, che anzi necessitano di ulteriori spiegazioni, e cioè:
1. Poiché la lettera viene inviata da un servizio di posta di terzi, qui vengono applicate le impostazioni corrispondenti al server SMTP specifico. In questo caso, per il caso d'uso del server Yandex.Mail, vengono applicati i seguenti valori delle proprietà:
- Proprietà Ospite(pos.28) - Indirizzo del server di posta con il valore smtp.yandex.ru;
- Proprietà SMTPSecure
- Proprietà Porta
Questi valori delle proprietà sono stati presi dalla pagina Yandex.Help mostrata nello screenshot seguente.
Ma tali informazioni possono essere ottenute anche da altre risorse. Per fare ciò, è sufficiente inserire la query appropriata nel motore di ricerca, ad esempio: "Server smtp Yandex". Dove puoi trovare un gran numero di riferimenti su questo problema.
In modo simile, i valori delle impostazioni possono essere ottenuti da altri server SMTP. Di seguito è riportato uno screenshot della pagina della Guida di Mail.ru, che mostra le impostazioni del server SMTP del servizio di posta Mail.ru.
Pertanto, nel caso di utilizzo di Mail.ru come server SMTP di terze parti, dovrebbero essere applicati i seguenti valori delle proprietà della classe PHPMailer:
- Proprietà Ospite(pos.28) - Indirizzo del server di posta (smtp.mail.ru);
- Proprietà SMTPSecure(pos.32) - Protocollo di crittografia (ssl);
- Proprietà Porta(pos. 33) - Porta del server SMTP (465).
Un approccio simile dovrebbe essere applicato ad altri servizi di posta elettronica.
2. Nella proprietà Nome utente(pos. 30) è necessario indicare l'indirizzo completo della casella di posta del dominio. In questo caso, " [e-mail protetta]".
Tuttavia, se utilizzi un account diverso da un account di posta del dominio per inviare lettere, ma un indirizzo correlato direttamente al servizio di posta, ad esempio " [e-mail protetta]", il login dovrebbe essere solo la parte dell'indirizzo fino al segno "@". In questo caso il login avrebbe il valore "feedback".
3. PHPMailer fornisce una proprietà SMTPDebug(pos. 50), che consente di visualizzare diversi livelli di errori sulla schermata del browser. Questa funzionalità semplifica notevolmente la ricerca di problemi durante il debug di uno script.
In genere, in modalità normale, con il valore impostato su 0, l'output di informazioni dettagliate sull'errore è disabilitato. Ma se sorgono problemi con l'invio della posta o durante il debug, è possibile utilizzare altri valori per visualizzare informazioni più significative sull'errore.
Per vedere come appare in pratica, introduciamo temporaneamente qualche errore nelle impostazioni. Ad esempio, nella password di posta del dominio (property Parola d'ordine, pos.31). E anche per visualizzare informazioni dettagliate sull'errore, impostate temporaneamente nella proprietà SMTPDebug(pos.50) valore 1. Successivamente, quando tutto sarà debuggato e controllato, disabiliteremo la modalità di debug SMTP, sostituendo 1 con 0.
Nella parte finale dello script, dopo aver specificato tutte le proprietà e i metodi necessari, viene utilizzato il metodo per inviare la lettera Inviare()) (pos. 51). E se la lettera viene inviata e il metodo Inviare() per oggetto $posta restituisce true, quindi nella finestra di dialogo del browser attraverso la variabile $avviso Verrà visualizzato un messaggio relativo all'invio riuscito della posta (pos. 52).
Se per qualche motivo la posta non può essere inviata e, di conseguenza, il metodo non può restituire true, questo stato sarà accompagnato da un corrispondente messaggio di errore (pos. 55).
Controllo dell'invio di e-mail
Dopo aver creato uno script per l'invio della posta, naturalmente, dobbiamo guardare il risultato della nostra “creatività”. Abbiamo tenuto conto di tutto e non abbiamo commesso errori?
Per fare ciò, proviamo, come previsto, a inviare un messaggio dall'utente all'amministratore del sito dal modulo di feedback. Di seguito è riportato uno screenshot del modulo di feedback con i campi compilati prima dell'invio.
Ed ecco il risultato dell'invio del modulo.
Dove, dal messaggio nella finestra di dialogo del browser, è chiaro che la lettera non può essere inviata a causa di un problema con la connessione SMTP.
Ma sin da ora la proprietà SMTPDebug(pos. 50) viene assegnato il valore 1, quindi possiamo vedere informazioni dettagliate sull'errore che si è verificato e scoprire il motivo del suo verificarsi.
La schermata seguente mostra che durante il tentativo di connessione è stato rilevato un errore di autenticazione, ovvero l'utilizzo di un login o di una password errati.
Dopo aver eliminato la mancata corrispondenza della password (in precedenza è stata utilizzata una password errata per poter controllare l'output di informazioni aggiuntive sull'errore), proveremo a inviare nuovamente l'e-mail.
Questa volta tutto sembrava andare bene e abbiamo ricevuto un messaggio che la mail era stata inviata con successo. Apparentemente, a parte l'errore temporaneo inserito deliberatamente nella password della posta del dominio, non abbiamo commesso altri errori.
Ma per essere sicuri che la lettera sia stata effettivamente consegnata al destinatario, inseriamo la mail con l'indirizzo [e-mail protetta] e guarda il risultato.
Come puoi vedere, la lettera dall'indirizzo [e-mail protetta], dal quale abbiamo inviato un messaggio di posta elettronica con il nome "Feedback" giunto con successo all'amministratore del sito. Allo stesso tempo, il corpo della lettera contiene tutto il contenuto che abbiamo generato nello script utilizzando i dati ricevuti dal modulo di feedback, vale a dire:
- Nome del mittente: Nikolay;
- Indirizzo del mittente: [e-mail protetta];
- Oggetto del messaggio: Controllo invio mail;
- Contenuto del messaggio: messaggio di prova.
Ora, dopo aver verificato con successo l'invio della posta, è possibile disattivare la modalità di debug SMTP assegnando la proprietà SMTPDebug(pos.50) valore 0.
Pertanto, abbiamo completato il compito di creare uno strumento per l'invio di posta tramite SMTP con autorizzazione utilizzando un server di posta di terze parti.
Ad esempio, nel prossimo articolo vedremo come inviare email di conferma per recuperare i dati dell'account utente registrato.
File di origine del sito
I file sorgente del sito con gli aggiornamenti apportati in questo articolo possono essere scaricati dai materiali aggiuntivi allegati:
- file della directory www
- Tabelle del database MySQL
L'invio di posta tramite SMTP da un server locale consente di testare l'invio di messaggi da un sito situato su un computer locale o, più semplicemente, da un server locale. Per fare ciò, puoi utilizzare qualsiasi servizio di posta Yandex, Google o mail.ru.
Innanzitutto, SMTP (Simple Mail Transfer Protocol) è un protocollo di rete ampiamente utilizzato progettato per la trasmissione di posta elettronica su reti TCP/IP. E tutti i servizi di posta elettronica più diffusi dispongono di tali protocolli.
Con l'avvento dei server locali non è stato più necessario scegliere un provider di hosting per verificare le prestazioni dei singoli script o sistemi cms e tanto meno pagarli. È molto più semplice testare tutto su un computer e poi puoi mostrare a tutti cosa hai “fatto”.
Molti di questi server dispongono già di software integrato e delle funzionalità necessarie per lavorare con la posta, devi solo configurarlo correttamente.
Per verificare la funzionalità di tale posta, è richiesto il minimo indispensabile:
- Puoi utilizzare Openserver come server locale.
- E uno script semplice, il cui modello può essere trovato appena sotto.
- Puoi utilizzare qualsiasi server di posta.
Invio di posta php tramite la configurazione dello script SMTP
È necessario modificare un semplice modello di script che può essere copiato di seguito o scaricato da centinaia di siti simili.
Innanzitutto, devi modificare alcuni valori nel modello di script.
A
— modificare l'indirizzo postale a cui verrà inviato il messaggio di posta.
soggetto
- oggetto della lettera
Messaggio
- il messaggio stesso o il corpo della lettera.
Esempio del mio script:
Ovviamente puoi espandere leggermente la funzionalità e fare in modo che lo script visualizzi un messaggio sull'invio della posta. Anche se in realtà è il server SMTP che effettua l'invio e lo script genera solo il messaggio.
Ad esempio, puoi scrivere questo:
Tutti i valori sostituiti devono essere tra virgolette, altrimenti lo script genererà un errore. Successivamente, puoi salvare lo script nella cartella del server locale.
Per esempio: domini/send/index.php e inizia a configurare l'invio della posta tramite opensrerver SMTP.
![](https://i0.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_7.png)
La posta arriverà a qualsiasi indirizzo che verrà specificato nello script al posto del valore 'A'
, ma questa mail verrà elaborata e inviata esattamente dall'SMTP che verrà specificato nelle impostazioni di openserver.
- Avvio del server
- Apri il modulo openserver con le impostazioni nel menu "posta".
- Compiliamo tutti i campi come mostrato in figura, mentre sostituiamo il nome utente, l'e-mail del mittente e la password da una vera casella di posta Yandex.
![](https://i2.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_1.png)
Salviamo le impostazioni e dopo il riavvio del server è possibile accedere allo script stesso. Dalla cartella “I miei siti”, aprire la cartella “invia” in cui si trova lo script index.php precedentemente salvato.
![](https://i2.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_4.png)
Non appena si accede a questo script, in una nuova finestra del browser verranno visualizzate le informazioni che indicano che lo script è stato completato.
![](https://i0.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_5.png)
Successivamente, dovresti controllare la tua casella di posta, il cui indirizzo è stato specificato nello script, per vedere se la lettera è arrivata.
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_6.png)
Se non c'è significa che qualcosa non è configurato correttamente, oppure la lettera è finita nella cartella spam.
Tutte le altre impostazioni sembrano simili, ma per ogni evenienza, informazioni aggiuntive non danneggeranno.
Per impostare l'invio della posta tramite SMTP mail ru, è sufficiente sostituire i parametri Yandex con i parametri mail ru.
E per non ricostruire ogni volta il server locale, è meglio configurare diversi profili openserver. Come farlo è mostrato nel video tutorial.
In questo caso sarà sufficiente caricare semplicemente il profilo e tutte le impostazioni specificate per questo profilo saranno disponibili dopo il riavvio del server. È una cosa molto comoda e funziona in modo molto semplice.
Per ogni profilo (non importa come verrà chiamato), è necessario effettuare le proprie impostazioni, a meno che, ovviamente, non si preveda di utilizzare script, sistemi cms e applicazioni con parametri diversi.
In caso contrario, puoi cavartela con le impostazioni predefinite.
Per quanto riguarda la posta SMTP ru, qui è tutto identico.
I dati Yandex vengono modificati in dati mail ru
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_2.png)
Invio posta tramite smtp google
Per impostare l'invio della posta tramite Google SMTP, è necessario un piccolo sforzo.
In primo luogo, creare un profilo in Google è più difficile che in altri sistemi Yandex e mail ru
In secondo luogo, il sistema non lascerà semplicemente passare la lettera, anche se fornisci le tue informazioni di accesso. Per cominciare, invierà una lettera contenente tutte le informazioni necessarie su ulteriori istruzioni.
Altrimenti Per Google la configurazione è esattamente la stessa. Cambiano solo tutti i dati.
![](https://i1.wp.com/starting-constructor.ru/wp-content/uploads/2018/01/Screenshot_3.png)
Per configurare l'invio di posta tramite altro SMTP, tutti i dati saranno più o meno gli stessi.
Se tutto ha funzionato per te e le lettere hanno raggiunto il destinatario specificato, significa che tutto è stato fatto correttamente. Sarebbe fantastico se condividessi le tue esperienze nei commenti.
Affinché un determinato sito Web abbia l'opportunità di funzionare in modo efficiente e produttivo, la sua creazione dovrebbe essere affrontata nel modo più responsabile e attento possibile. Un'attenzione particolare merita la scelta del sistema che verrà utilizzato per realizzare un negozio online. Il fatto è che una piattaforma commerciale specializzata nella vendita di beni o servizi deve consentire l'implementazione di tutte le funzionalità necessarie ed essere facile da usare, sia per gli amministratori coinvolti nella manutenzione e riempimento dei siti, sia per i clienti dei negozi online. Molte persone e aziende che si trovano ad affrontare la questione della scelta di un CMS adatto a se stesse analizzano se scegliere Magento o OkayCMS. Confrontiamo le caratteristiche e le capacità di questi motori di siti web.
Quando lavori sul tuo sito web, una persona o un'azienda dovrà impegnarsi molto: solo in questo caso puoi contare su risultati positivi e ottenere uno strumento veramente efficace. Una delle domande fondamentali che dovrà essere risolta ancor prima di iniziare a creare un sito web sarà come decidere l'opzione CMS più adatta. Successivamente confronteremo due CMS: Joomla o OkayCMS e presteremo attenzione alle caratteristiche di ciascuno di essi.
Avere un proprio sito web è uno dei requisiti fondamentali per un'attività efficace e di successo. Le statistiche indicano chiaramente un aumento del numero di acquisti di vari beni e ordini di servizi tramite Internet. Tenendo conto di ciò, la maggior parte delle aziende commerciali è già consapevole della necessità di avere un proprio sito web. Tuttavia, il semplice fatto di disporre di una risorsa Internet non è sufficiente per contare sulla sua efficacia, redditività e sui vantaggi aziendali attesi.
Quando ti prepari a creare il tuo sito web o ad aprire un negozio online, devi prendere in considerazione e analizzare molti problemi, oltre a risolvere vari problemi. Solo in questo caso puoi contare sul fatto che il tuo progetto porterà risultati positivi e riuscirà a soddisfare pienamente le tue aspettative. Tra le varie problematiche legate allo sviluppo di un negozio online, merita un'attenzione particolare la questione della scelta di un CMS. Per rendere più facile per te decidere il motore ottimale per te stesso, all'interno
Quando si pianifica di creare il proprio sito Web per un futuro negozio online, un numero abbastanza elevato di persone e persino di aziende specializzate nelle vendite si trovano di fronte a una scelta difficile ed estremamente importante: quale dei CMS esistenti scegliere. Se stai pensando a cosa scegliere: PrestaShop o OkayCMS, ti consigliamo di leggere questo articolo, in cui confronteremo questi due sistemi per la creazione di siti Internet, in particolare negozi online.
Poiché l'invio di messaggi anonimi da server hosting virtuali Windows è proibito, l'invio delle lettere dovrebbe avvenire tramite un server SMTP, per il quale è anche possibile utilizzare il nostro sistema di posta.
Come inviare e-mail utilizzando PHP?
Utilizzando qualsiasi classe PHP che supporti l'autorizzazione sul server SMTP. Ad esempio, puoi utilizzare il set di classi PHPMailer.
Puoi anche utilizzare il nostro esempio, che implementa l'invio di lettere utilizzando un server SMTP, che richiede autorizzazione. Pertanto, non dimenticare di aggiungere allo script i dettagli di accesso appropriati, ad esempio:
// Se è necessario mostrare il registro della sessione SMTP, è possibile rimuovere il commento dalla riga seguente. // $_SERVER["debug"] = vero; funzione MailSmtp ($destinatario, $oggetto, $contenuto, $intestazioni, $debug = 0) ($smtp_server = "smtp.sito"; // Indirizzo del server SMTP$porta_smtp = 25 ; // Porta del server SMTP$utente_smtp = " [e-mail protetta]"
;
// Nome utente per l'autorizzazione sul server SMTP$smtp_password = "pAsSwORd"; // Password per l'autorizzazione sul server SMTP$mail_da = " [e-mail protetta]"
;
// Casella postale da cui viene inviata la lettera$sock = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $str = fgets ($calzino, 512); if (! $sock ) ( printf ("Il socket non è stato creato\n" ); exit(1 ); ) smtp_msg ($sock, "HELO". $_SERVER [ "NOME_SERVER" ]); smtp_msg($sock, "LOGIN AUTORIZZATO"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($sock, base64_encode ($smtp_password)); smtp_msg ($sock, "MAIL DA:<"
.
$mail_from
.
">" ); smtp_msg ($calzino, "RCPT TO:<"
.
$reciever
.
">" ); smtp_msg ($sock , "DATA" ); $headers = "Oggetto: " . $oggetto . "\r\n" . $headers ; $dati = $headers . "\r\n\r\n" . $contenuto . "\r\n." ; smtp_msg ($calzino, $dati ); smtp_msg ($calzino, "QUIT" ); fclose ($calzino); ) funzione smtp_msg ($calzino, $msg) ( if ( ! $sock ) ( printf ("Socket rotto!\n" ); exit(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Invia da noi : %S
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ("Il socket è down\n" ); exit(1); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Ottenuto dal server: %s
" , nl2br (htmlspecialchars ($str )); ) $e = esplode (" " , $str ); $code = array_shift ($e ); $str = implode (" ", $e ); if ($code > 499) (printf ( "Problemi con la conversazione SMTP.
Codice %d.
Messaggio %s
"
, $codice , $str ); uscita(1); ) ) ) ?>
Scarica un esempio di script già pronto con la funzione MailSmtp(): smtpauth.php.sample
Puoi utilizzare la funzione MailSmtp() descritta sopra per sostituire direttamente la funzione mail(); considera un esempio della forma più semplice in PHP:
// Intestazioni dei messaggi, definiscono la codifica del messaggio, i campi Da, A, ecc.$headers = "Versione MIME: 1.0\r\n" ; $intestazioni .= "Tipo di contenuto: text/html; charset=windows-1251\r\n"; $intestazioni .= "A: $a \r\n" ; $intestazioni .= "Da: nome del mittente "
;
// posta ($a, $oggetto, $messaggio, $intestazioni); require_once "smtpauth.php"; MailSmtp ($a, $oggetto, $messaggio, $intestazioni); ) ?>
Affinché questo modulo funzioni senza la funzione mail(), abbiamo incluso il file smtpauth.php tramite require_once e chiamato la funzione MailSmtp() descritta in esso con argomenti simili a mail(). Allo stesso tempo, abbiamo commentato la stessa chiamata mail() nel codice per evitare errori durante l'esecuzione dello script.
Come inviare e-mail utilizzando ASP.NET?
Se stai utilizzando la versione 2.0, utilizza la classe MailMessage System.Net.Mail), ben descritto.
Di seguito sono riportati esempi del suo utilizzo per i linguaggi C# e VisualBasic:
Esempio per il linguaggio C#:
<% @Page Language="c#" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
MailMessage message = new MailMessage(); // creando una nuova lettera messaggio.To.Add(" [e-mail protetta]"); // aggiunta dell'indirizzo del destinatario messaggio.From = new MailAddress("da@ dominio.tld", "Nome del mittente"); // specificando il nome e l'indirizzo del mittente message.Subject = "Oggetto del messaggio"; // specificando l'oggetto della lettera messaggio.BodyEncoding = System.Text.Encoding.UTF8; // specificando la codifica delle lettere messaggio.IsBodyHtml = falso; // specificando il formato della lettera (true - HTML, false - non HTML) message.Body = "Testo del messaggio"; // specificando il testo (corpo) della lettera Client SmtpClient = nuovo SmtpClient("smtp.site",25); //creazione di una nuova connessione al server "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // definisce il metodo per l'invio dei messaggi client.EnableSsl = falso; // disabilita la necessità di utilizzare una connessione sicura al server client.UseDefaultCredentials = false; // disabilita l'uso dei dettagli di autorizzazione predefiniti client.Credentials = new NetworkCredential("postmaster@ dominio.tld", "***parola d'ordine***"); // specificando i dettagli necessari (nome utente e password) per l'autorizzazione sul server SMTP cliente.Invia(messaggio); // invia messaggio
%>
Scarica un esempio di modulo finito che dimostra l'uso di questo metodo: MailForm.aspx.
Esempio per il linguaggio VisualBasic:
<% @Page Language="VB" Debug="true" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
Dim smtpMssg AS new MailMessage
smtpMssg.From = New MailAddress ("admin@dominio.tld", "Nome_mittente") smtpMssg.To.Add (" [e-mail protetta]") " aggiungendo l'indirizzo del destinatario smtpMssg.Subject = "Oggetto dell'e-mail" "indicazione dell'oggetto della lettera smtpMssg.Body = "Testo del messaggio" "indicazione del testo (corpo) della lettera smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " indicazione della codifica delle lettere smtpMssg.IsBodyHtml = falso " indicazione del formato della lettera (true - HTML, false - non HTML) Oscura SmtpMail come nuovo SmtpClient("smtp.site", 25) " dichiarazione di un nuovo oggetto di tipo "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "indicazione della modalità di consegna della lettera SmtpMail.UseDefaultCredentials = False "disabilitare l'uso delle credenziali di autorizzazione per impostazione predefinita" SmtpMail.EnableSsl = Falso " disabilita la necessità di utilizzare una connessione sicura al server SmtpMail.Credentials = new NetworkCredential("postmaster@ dominio.tld", "***parola d'ordine***") "indicando i dati necessari (nome utente e password) per l'autorizzazione sul server SMTP SmtpMail.Send(smtpMssg) "invio di un messaggio
%>
Esiste anche una classe SmtpMail deprecata (e deprecata) (che utilizza lo spazio dei nomi System.Web.Mail). Di seguito è riportato un esempio del suo utilizzo per il linguaggio VisualBasic:
<% @Page Language="VB" Debug="true" %>
<% @Import Namespace="System.Web" %>
<% @Import Namespace="System.Web.Mail" %>
<%
Dim smtpMssg = new MailMessage " dichiarazione di un nuovo oggetto di tipo "MailMessage" smtpMssg.From = "Nome_mittente dominio.tld>" "Indicazione del nome e dell'indirizzo del mittente smtpMssg.To = "amministratore@ dominio.tld" "indicazione dell'indirizzo del destinatario smtpMssg.BodyFormat = MailFormat.Testo "indicazione del formato della lettera smtpMssg.BodyEncoding = Codifica.UTF8 "indicando la codifica delle lettere smtpMssg.Subject = "Oggetto dell'e-mail" "indicazione dell'oggetto della lettera smtpMssg.Body = "Testo del messaggio" "indicazione del testo della lettera smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "indicando la necessità dell'autorizzazione SMTP sul server smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ dominio.tld") "nome utente per l'autorizzazione smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***password***") "password per l'autorizzazione SmtpMail.SmtpServer = "smtp.sito" " specificando l'indirizzo del server SMTP SmtpMail.Send(smtpMssg) "invio di un messaggio
%>
Come inviare e-mail utilizzando ASP?
Tieni presente che quando si utilizza il nostro server SMTP è richiesta l'autorizzazione, quindi non dimenticare di aggiungere i dettagli di accesso appropriati allo script, ad esempio:
<%
iConfig = Server.CreateObject("CDO.Configuration")
Set iConfig = Server.CreateObject("CDO.Configuration")
With iConfig.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@dominio.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Update End With Set cdoMessage = CreateObject("CDO.Message") With cdoMessage Set .Configuration = iConfig .From = "Utente di prova dominio.tld>" .To = "Utente " .Subject = "Ciao utente" .TextBody = "Scrivo questo messaggio dallo script ASP." .Send End With Set cdoMessage = Nothing Set iConfig = Nothing %>
Alcuni CMS dispongono già di strumenti integrati per l’invio della corrispondenza o di moduli corrispondenti; vediamo quelli più diffusi.
WordPress
Per questo CMS esiste un modulo speciale “WP Mail SMTP”, un esempio della sua configurazione è descritto nella pagina del modulo.
Prestare attenzione all'illustrazione nell'esempio; nel nostro sistema di posta è necessario utilizzare la porta 25 e la crittografia SSL non è richiesta.
Joomla
Nel pannello di amministrazione, vai alla sezione "Impostazioni generali", seleziona la scheda "Server". Nel campo "Posta", è necessario selezionare il metodo di invio come "server SMTP", nei campi "Indirizzo server SMTP" e "Login SMTP" e "Password SMTP" specificare i dettagli appropriati del sistema di posta, ad esempio: smtp.sito, box@tuo_dominio e corrispondente parola d'ordine.
Drupal
Questo CMS dispone anche di un proprio modulo per lavorare con un server SMTP, basato su PHPMailer.È possibile scaricare questo modulo dalla sua pagina sul sito Web CMS Drupal; una descrizione dell'installazione del modulo è disponibile nell'archivio con esso.
NetCat
Questo CMS non dispone di funzioni integrate per lavorare con un server SMTP. Per inviare posta utilizzando gli script del sito, possiamo offrirti di utilizzare la nostra soluzione; per collegarla, è necessario eseguire i seguenti passaggi:
dominio.tld dovrebbe essere sostituito con il tuo nome di dominio.
La soluzione proposta funziona con tutti i moduli NetCat che utilizzano le funzioni standard di questo CMS per inviare posta.