Visualizzazione risultati 1 fino 8 di 8

Discussione: funzione mail() ed smtp

  1. #1
    Guest

    Exclamation funzione mail() ed smtp

    Salve a tutti, ho installato correttamente un CMS sul mio sito e desideravo utilizzare la funzione del CMS per poter spedire mail a chi si registra al sito. Però non riesco a far partire alcuna mail...sia utilizzando la funzione ()mail, sia utilizzando un server SMTP esterno...ho provato con i server di tin.it, gmail e register.it ma nulla da fare...non arrivano mai le mail da nessuna parte...non sò che fare perchè questa è una funzione essenziale per poter utilizzare il CMS in questione e per poter avere a che fare con le persone. Grazie a tutti per l'aiuto. Sò di essere stato generico, se avete bisogno di qualche info più specifica chiedetemi e se saprò rispondere lo farò al più presto! Grazie anticipatamente.

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Se il tuo CMS lo permette (e credo proprio di si) devi cambiare le impostazioni di invio mail.

    Al posto di utilizzare l'invio di mail tramite server SMTP devi far utilizzare la semplice funzione mail() di PHP in quanto il server SMTP per il 50% dei casi utilizza la porta 25 per le sue connessioni e questa porta su AlterVista al momento è bloccata.
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    Avevo provato a mandare delle mail di test con la funzione ()mail e niente...non arrivava. Allora ho deciso di provare con l'smtp esterno sia su porta standard 25 sia su altre porte come la 465 sempre con risultati negativi...sulle impostazioni del CMS posso impostare server smtp, porta, crittografia SSL o TSL e credenziali di accesso...ho provato circa una decina di combinazioni diverse tra porte, crittografia ed indirizzi server ed utilizzando il test di funzionamento non mi è mai arrivata nessuna mail...non capisco e sto impazzendo perchè da quello che vedo sto chiedendo una cosache mi è concessa...mhmhmh

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Come ti ho già detto la funzione SMTP non andrà mai su AlterVista perchè le uniche porte a cui gli script si possono connettere (con o senza limitazione) sono la 80 e 8080.

    Riguardo alla funzione mail() di PHP non so che dirti...non ricevi nessun errore quando provi ad inviare la mail?

    A quante persone invii la mail con la funzione di PHP?

    Le mail inviate da questa funzione vanno ad indirizzi reali o ad alias name?

    Sei certo che le mail non finiscano in cartelle come "spam", "cestino", "posta indesiderata", ecc?
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    Guest

    Predefinito

    Ok, con l'smpt non andrà e ok, siamo d'accordo...ma per quanto riguarda la funzione mail() non ricevo alcun errore la mail viene inviata ad una persona sola e provando ho provato diversi indirizzi tin.it, live.it, hotmail.it, gmail.com...controllando ogni volta se vanno a finire nella bulk mail o spam, che dir si voglia, niente...non arrivano mai. Non credo ci sia nulla da attivare sul pannello di controllo su altervista ed ho provato a guardare tutte le impostazioni sul CMS e niente...non sò dove sbattere la testa, perchè è una funzione essenziale e vitale di cui ho bisogno...

  6. #6
    Guest

    Angry

    ho provato ad utilizzare un semplice script in php per testare la mail e non funziona..si chiama mail_test.php ed il suo contenuto è questo:

    <html>
    <body>

    <?php

    if(isset($_POST['submit'])) {

    if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",$_POST['email'])) {
    mail($_POST['email'],"Test Mail","Test mail from server");
    echo 'Mail send to';
    } else {
    echo 'Invalid email format';
    }

    echo ' ' . $_POST['email'];

    } else {

    ?>

    <form method="POST" action="">
    Enter your email: <br> <br>
    <input name="email" type="text" value="you@isp.com"> <br> <br>
    <input type="submit" name="submit" value="Send Test Email">
    </form>

    <?php

    }

    ?>

    <br>


    </body>
    </html>
    facendo questo test, successivamente mi compare la scritta "Mail send to -indirizzo-" ma non arriva nulla! Aiuto!!! :(

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Prova così:

    Codice PHP:
    <html>
    <body>

    <?php

    if(isset($_POST['submit'])) {

    if(
    eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",$_POST['email'])) {
    if(
    mail($_POST['email'],"Test Mail","Test mail from server","From: test@test.com")){
    echo
    'Mail send to';
    } else {
    echo
    'Invalid email format';
    }}

    echo
    ' ' . $_POST['email'];

    } else {

    ?>

    <form method="POST" action="">
    Enter your email: <br> <br>
    <input name="email" type="text" value="you@isp.com"> <br> <br>
    <input type="submit" name="submit" value="Send Test Email">
    </form>

    <?php

    }

    ?>

    <br>


    </body>
    </html>
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    Ok Miki, non bestemmiarmi dietro ma le mail con lo script mail_test.php funzionano in entrambi i casi...sia con l'originale sia quello con le modifiche da te consigliate...mi sembrava che non arrivassero perchè dopo diversi minuti, utilizzando lo script originale, non era ancora arrivata e quindi pensavo non funzionava...lo script con le tue modifiche ha mandato la mail e mi è arrivata immediatamente...quindi a questo punto credo debba cercare il motivo all'interno dello script del cms =/ Vi posto il codice che dovrebbe gestire le mail nel CMS, e cercando anche sul forum ufficiale del CMS parlavano di questo file, ho provato le risoluzioni offerte dall'altro forum ma sempre no result =(

    Codice PHP:
    <?php

    /**
    * Mail class, Mail.php
    * Mails management
    * @category classes
    *
    * @author PrestaShop <support@prestashop.com>
    * @copyright PrestaShop
    * @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0
    * @version 1.2
    *
    */

    include_once(_PS_SWIFT_DIR_.'Swift.php');
    include_once(
    _PS_SWIFT_DIR_.'Swift/Connection/SMTP.php');
    include_once(
    _PS_SWIFT_DIR_.'Swift/Connection/NativeMail.php');
    include_once(
    _PS_SWIFT_DIR_.'Swift/Plugin/Decorator.php');

    class
    Mail
    {
    static public function
    Send($id_lang, $template, $subject, $templateVars, $to, $toName = NULL, $from = NULL, $fromName = NULL, $fileAttachment = NULL, $modeSMTP = NULL, $templatePath = _PS_MAIL_DIR_)
    {
    $configuration = Configuration::getMultiple(array('PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_METHOD', 'PS_MAIL_TYPE'));
    if(!isset(
    $configuration['PS_MAIL_SMTP_ENCRYPTION'])) $configuration['PS_MAIL_SMTP_ENCRYPTION'] = "off";
    if(!isset(
    $configuration['PS_MAIL_SMTP_PORT'])) $configuration['PS_MAIL_SMTP_PORT'] = "default";

    if (!isset(
    $from)) $from = $configuration['PS_SHOP_EMAIL'];
    if (!isset(
    $fromName)) $fromName = $configuration['PS_SHOP_NAME'];
    if ((!empty(
    $from) AND !Validate::isEmail($from)) OR (!empty($fromName) AND !Validate::isMailName($fromName)) OR
    (!
    is_array($to) AND !Validate::isEmail($to)) OR (!empty($toName) AND !Validate::isMailName($toName)) OR !is_array($templateVars) OR
    !
    Validate::isTplName($template) OR !Validate::isMailSubject($subject))
    die(
    Tools::displayError('Error: mail parameters are corrupted'));

    /* Construct multiple recipients list if needed */
    if (is_array($to))
    {
    $to_list = new Swift_RecipientList();
    foreach (
    $to as $key => $addr)
    {
    $to_name = NULL;
    $addr = trim($addr);
    if (!
    Validate::isEmail($addr))
    die(
    Tools::displayError('Error: mail parameters are corrupted'));
    if (
    $toName AND is_array($toName) AND Validate::isGenericName($toName[$key]))
    $to_name = $toName[$key];
    $to_list->addTo($addr, $to_name);
    }
    $to_plugin = $to[0];
    $to = $to_list;
    } else {
    /* Simple recipient, one address */
    $to_plugin = $to;
    $to = new Swift_Address($to, $toName);
    }
    try {
    /* Connect with the appropriate configuration */
    if (intval($configuration['PS_MAIL_METHOD']) == 2)
    {
    $connection = new Swift_Connection_SMTP($configuration['PS_MAIL_SERVER'], $configuration['PS_MAIL_SMTP_PORT'], ($configuration['PS_MAIL_SMTP_ENCRYPTION'] == "ssl") ? Swift_Connection_SMTP::ENC_SSL : (($configuration['PS_MAIL_SMTP_ENCRYPTION'] == "tls") ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_OFF));
    $connection->setTimeout(4);
    if (!
    $connection)
    return
    false;
    if (!empty(
    $configuration['PS_MAIL_USER']) AND !empty($configuration['PS_MAIL_PASSWD']))
    {
    $connection->setUsername($configuration['PS_MAIL_USER']);
    $connection->setPassword($configuration['PS_MAIL_PASSWD']);
    }
    }
    else
    $connection = new Swift_Connection_NativeMail();

    if (!
    $connection)
    return
    false;
    $swift = new Swift($connection);
    /* Get templates content */
    $iso = Language::getIsoById(intval($id_lang));
    if (!
    $iso)
    die (
    Tools::displayError('Error - No iso code for email !'));
    $template = $iso.'/'.$template;


    if (!
    file_exists($templatePath.$template.'.txt') OR !file_exists($templatePath.$template.'.html'))
    die(
    Tools::displayError('Error - The following email template is missing:').' '.$templatePath.$template.'.txt');

    $templateHtml = file_get_contents($templatePath.$template.'.html');
    $templateTxt = strip_tags(html_entity_decode(file_get_contents($templatePath.$template.'.txt'), NULL, 'utf-8'));
    include_once(
    dirname(__FILE__).'/../mails/'.$iso.'/lang.php');

    global
    $_LANGMAIL;
    /* Create mail and attach differents parts */
    $message = new Swift_Message('['.Configuration::get('PS_SHOP_NAME').'] '.((is_array($_LANGMAIL) AND key_exists($subject, $_LANGMAIL)) ? $_LANGMAIL[$subject] : $subject));
    $templateVars['{shop_logo}'] = (file_exists(_PS_IMG_DIR_.'logo.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo.jpg'))) : '';
    $templateVars['{shop_name}'] = Configuration::get('PS_SHOP_NAME');
    $templateVars['{shop_url}'] = 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__;
    $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $templateVars)), 'decorator');
    if (
    $configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 2)
    $message->attach(new Swift_Message_Part($templateTxt, 'text/plain', '8bit', 'utf-8'));
    if (
    $configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 1)
    $message->attach(new Swift_Message_Part($templateHtml, 'text/html', '8bit', 'utf-8'));
    if (
    $fileAttachment AND isset($fileAttachment['content']) AND isset($fileAttachment['name']) AND isset($fileAttachment['mime']))
    $message->attach(new Swift_Message_Attachment($fileAttachment['content'], $fileAttachment['name'], $fileAttachment['mime']));
    /* Send mail */
    $send = $swift->send($message, $to, new Swift_Address($from, $fromName));
    $swift->disconnect();
    return
    $send;
    }

    catch (
    Swift_ConnectionException $e) { return false; }
    }
    }
    Ultima modifica di BlackMod : 19-12-2009 alle ore 20.54.36

Regole di scrittura

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