Visualizzazione risultati 1 fino 11 di 11
Like Tree3Likes
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By alemoppo

Discussione: Ricevere email da contact form usando PHPMailer

  1. #1
    Guest

    Predefinito Ricevere email da contact form usando PHPMailer

    Ciao ragazzi,

    cercherò di spiegarmi nel modo più chiaro possibile: vorrei ricevere, tramite PHPMailer, le emails inviate dal form del mio sito. Fin'ora ho provato diverse configurazioni e tutte hanno lo stesso problema, ossia al mittente delle emails recapitatemi non riesco a mettere l'indirizzo che ha inserito l'utente nel form. In
    Codice PHP:
    $mail->setFrom();
    sono costretto ad usare lo stesso indirizzo che uso per l'SMTP pena l'errore "Mailbox unavailable".

    Inserisco il codice incriminato:

    Codice PHP:
    <?php
    $msg
    = "";
    use
    PHPMailer\PHPMailer\PHPMailer;

    include_once
    "PHPMailer/PHPMailer.php";
    include_once
    "PHPMailer/Exception.php";
    include_once
    "PHPMailer/SMTP.php";

    if (isset(
    $_POST['submit'])) {
    $subject = $_POST['subject'];
    $email = $_POST['email'];
    $my_email = "miamail@mail.com";
    $message = $_POST['message'];

    $mail = new PHPMailer();

    $mail->Host = "smtp.mail.com";
    $mail->isSMTP();
    $mail->SMTPAuth = true;
    $mail->Username = "miamail@mail.com";
    $mail->Password = "12345";
    $mail->SMTPSecure = "tls";
    $mail->Port = 587;

    $mail->addAddress('miamail@mail.com');
    $mail->setFrom('miamail@mail.com');
    $mail->Subject = $subject;
    $mail->isHTML(true);
    $mail->Body = $message;

    if (
    $mail->send())
    $msg = "Your email has been sent, thank you!";
    else
    //$msg = "Please try again!";
    echo $mail->ErrorInfo;
    }
    ?>

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport"
    content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Contact Form</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
    </head>
    <body>
    <div class="container" style="margin-top: 100px">
    <div class="row justify-content-center">
    <div class="col-md-6 col-md-offset-3" align="center">
    <br><br>

    <?php if ($msg != "") echo "$msg<br><br>"; ?>

    <form method="post" action="sendemail.php">
    <input class="form-control" name="subject" placeholder="Subject..."><br>
    <input class="form-control" name="email" type="email" placeholder="Email..."><br>
    <textarea placeholder="Message..." class="form-control" name="message"></textarea><br>
    <input class="btn btn-primary" name="submit" type="submit" value="Send Email">
    </form>
    </div>
    </div>
    </div>
    </body>
    </html>
    Come potete vedere in
    Codice PHP:
    $mail->setFrom();
    sono costretto ad inserire "miamail@mail.com" altrimenti ottengo l'errore di cui sopra e la mail non viene inviata. Il problema è che in questo modo, quando ricevo una mail dal form, al mittente c'è il mio indirizzo e non quello inserito dall'utente nel form, io vorrei fare il contrario.
    In teoria
    Codice PHP:
    $mail->setFrom();
    dovrebbere essere così
    Codice PHP:
    $mail->setFrom($email);
    , dove
    Codice PHP:
    $email
    è la variabile contenente l'indirizzo inserito nel form e che dovrebbe andare al mittente, ma così non funziona.

    Al momento sto testando con XAMPP.

    Chi mi da una mano? Sono disperato

    In alternativa sapreste indicarmi un'alternativa free per il mio scopo?

    Grazie!
    Ultima modifica di italiaedintorni : 15-12-2018 alle ore 19.48.51

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Credo dipenda dal browser obsoleto che stai usando a valore di ciò verifica se effettivamente
    Codice PHP:
    if(!empty($_POST['email'])) {
    $email = $_POST['email'];
    }
    In realtà devi verificare che tutti i valori passati in POST siano effettivamente presenti.
    Se hai dubbi chiedi, però prima prova modificando la variabile $msg con l'aggiunta del mittente $email quando è vero altrimenti togli le doppie barre che hai inserito.
    C'è una cosa che non ho capito tu vuoi far usare la tua e-mail da tutti o vuoi inviare con il tuo mittente al destinatario ricevuto dal form? $mail->addAddress('myfriend@example.net', 'My Friend'); mentre se vuoi inviare con il tuo mittente verso te stesso devi inserire $email in $message = "$email $_POST ['message']"; hai l'indirizzo email e il testo scritto dal tuo utente dentro il corpo del messaggio.
    Ultima modifica di darbula : 15-12-2018 alle ore 21.29.30

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Credo dipenda dal browser obsoleto che stai usando...
    In realtà sto usando l'ultima versione di FireFox, la v64 a 64 bit.

    C'è una cosa che non ho capito tu vuoi far usare la tua e-mail da tutti o vuoi inviare con il tuo mittente al destinatario ricevuto dal form? $mail->addAddress('myfriend@example.net', 'My Friend'); mentre se vuoi inviare con il tuo mittente verso te stesso devi inserire $email in $message = "$email $_POST ['message']"; hai l'indirizzo email e il testo scritto dal tuo utente dentro il corpo del messaggio.
    Vorrei che una volta cliccato "Invia" sul form arrivi una mail al mio indirizzo contenente i dati inseriti nel form dall'utente. Il mittente della mail però deve risultare essere colui che ha usato il form, non io.

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Citazione Originalmente inviato da italiaedintorni Visualizza messaggio
    dovrebbere essere così
    Codice PHP:
    $mail->setFrom($email);
    Quello è il metodo corretto (e unico) di impostare il mittente usando PHP Mailer.
    Dando per scontato che tu abbia già verificato che $email contenga effettivamente un valore, l'alternativa più probabile è che il tuo provider blocchi l'invio di email con un mittente personalizzato. Per esempio gmail lo fa.

    Qualcuno ha avuto "fortuna" specificando un nome oltre all'indirizzo:
    Codice PHP:
    $mail->SetFrom($email, 'Nome contatto');
    Una possibilità da valutare in ogni caso è utilizzare un ReplyTo anziché From:
    Codice PHP:
    $mail->AddReplyTo($email);
    italiaedintorni likes this.

    I suggerimenti che do più spesso:


  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    l'alternativa più probabile è che il tuo provider blocchi l'invio di email con un mittente personalizzato.
    Guarda ho provato anche con mail.com e libero.it ma il risultato non cambia

    Qualcuno ha avuto "fortuna" specificando un nome oltre all'indirizzo:
    Codice PHP:
    $mail->SetFrom($email, 'Nome contatto');
    Così?
    Codice PHP:
    $mail->SetFrom($email, $name);
    Una possibilità da valutare in ogni caso è utilizzare un ReplyTo anziché From:
    Codice PHP:
    $mail->AddReplyTo($email);
    Il
    Codice PHP:
    $mail->AddReplyTo($email);
    funziona, avevo già provato ma
    Codice PHP:
    $mail->SetFrom();
    devo comunque inserirlo altrimenti mi da errore

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Guarda ho provato anche con mail.com e libero.it ma il risultato non cambia
    Sarebbe comprensibile se anche loro bloccassero mittenti personalizzati. "Mailbox unavailable" è il messaggio d'errore mostrato quando una delle caselle email coinvolte nell'invio (mittente, destinatario...) non è disponibile. Se provi ad inviare una mail da un indirizzo di posta fittizio mi sembra normale questo risultato.

    Così?
    Codice PHP:
    $mail->SetFrom($email, $name);
    Sì, posto che in name vi sia un valore di tipo stringa.

    funziona, avevo già provato ma
    Codice PHP:
    $mail->SetFrom();
    devo comunque inserirlo altrimenti mi da errore
    E allora... inseriscilo
    Scherzi a parte, non ricordo se in PHPMailer sia obbligatorio invocare quel metodo. Se non facendolo viene generato un errore immagino di sì. In ogni caso una mail ha un header from, dunque non è strano che vada specificato.
    italiaedintorni likes this.

    I suggerimenti che do più spesso:


  7. #7
    Guest

    Predefinito

    Credo di aver risolto, prima non andava perchè non lo stavo testando online ma bensì con XAMPP. L'unica cosa adesso è che Altervista nella mail inserisce questo link anti spam:
    Codice:
    To report abuses or spam please follow this link: http://sp.altervista.it/...
    E' normale?
    Ultima modifica di italiaedintorni : 17-12-2018 alle ore 22.38.36

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da italiaedintorni Visualizza messaggio
    E' normale?
    Sì, inviando email tramite alterVista è normale che appaia quel link, per prevenire abusi.
    Se vuoi eliminarlo, ti consiglierei di utilizzare ad esempio sendGrid.

    Ciao!
    italiaedintorni likes this.

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Sì, inviando email tramite alterVista è normale che appaia quel link, per prevenire abusi.
    Se vuoi eliminarlo, ti consiglierei di utilizzare ad esempio sendGrid.

    Ciao!
    Purtroppo sendGrid non è free quindi credo rimarrò con PHPMailer, comunque grazie per l'info. :-)

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    100 email al giorno non ti sono sufficienti? (in c.c. o meglio ccn dovrebbe contarne come una soltanto).

    Ciao!

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    100 email al giorno non ti sono sufficienti? (in c.c. o meglio ccn dovrebbe contarne come una soltanto).

    Ciao!
    Uh...mi ero fermato a 40K mail per i primi 30 giorni, 100 email non mi arrivano neanche nell'arco di un anno :-D

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •