Pagina 1 di 1

Problemi invio mail a libero, email.it, ecc ecc... Soluzioni

Inviato: 24/06/2008, 15:39
da hsg26
Oggi mi sono messo a curiosare per possibili soluzioni.

Vi invito quindi a provarle una ad una... e non do alcuna consulenza sulle soluzioni trovate.

FATE SEMPRE UN BACKUP IN MODO DA POTER TORNARE ALL'INIZIO SE UNA MODIFICA NON RISOLVE IL PROBLEMA.

Riporterò unicamente alcune cose da oscommerce.com

Soluzione 1:

/includes/functions/general.php only - probabilmente necessario farlo anche sotto /admin

Aprire /includes/functions/general.php.

Sostituire la funzione tep_mail function con:

Codice: Seleziona tutto

function sock_mail($auth,$to, $subj, $body, $head, $from){
     $lb="\r\n";                        //linebreak
     $body_lb="\r\n";                //body linebreak
     $loc_host = "localhost";        //localhost
     $smtp_acc = "username";        //account
     $smtp_pass="password";            //password
     $smtp_host="localhost";    //server SMTP
     #$hdr = explode($lb,$head);        //header
    
     if($body) {$bdy = preg_replace("/^\./","..",explode($body_lb,$body));}
    
     // build the array for the SMTP dialog. Line content is array(command, success code, additonal error message)
     if($auth == 1){// SMTP authentication methode AUTH LOGIN, use extended HELO "EHLO"
         $smtp = array(
             // call the server and tell the name of your local host
             array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),
             // request to auth
             array("AUTH LOGIN".$lb,"334","AUTH error:"),
             // username
             array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "),
             // password
             array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : "));
     }
     else {// no authentication, use standard HELO    
         $smtp = array(
             // call the server and tell the name of your local host
             array("HELO ".$loc_host.$lb,"220,250","HELO error: "));
     }

    
     // envelop
     $smtp[] = array("MAIL FROM: <".$from.">".$lb,"250","MAIL FROM error: ");
     $smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: ");
     // begin data        
     $smtp[] = array("DATA".$lb,"354","DATA error: ");
     // header
     $smtp[] = array("Subject: ".$subj.$lb,"","");
     $smtp[] = array("To:".$to.$lb,"","");        
     foreach($head as $h) {$smtp[] = array($h.$lb,"","");}
     // end header, begin the body
     $smtp[] = array($lb,"","");
     if($bdy) {foreach($bdy as $b) {$smtp[] = array($b.$body_lb,"","");}}
     // end of message
     $smtp[] = array(".".$lb,"250","DATA(end)error: ");
     $smtp[] = array("QUIT".$lb,"221","QUIT error: ");

     // open socket
     $fp = @fsockopen($smtp_host, 25);
     if (!$fp) echo "<b>Error:</b> Cannot conect to ".$smtp_host."<br>";
    
     $banner = @fgets($fp, 1024);
     // perform the SMTP dialog with all lines of the list
     foreach($smtp as $req){
         $r = $req[0];
         // send request
         @fputs($fp, $req[0]);
         // get available server messages and stop on errors
         if($req[1]){
             while($result = @fgets($fp, 1024)){if(substr($result,3,1) == " ") { break; }};
             if (!strstr($req[1],substr($result,0,3))) echo"$req[2].$result<br>";
         }
     }
     $result = @fgets($fp, 1024);
     // close socket
     @fclose($fp);
     return 1;
 }
 function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {
  $headers[0]='MIME-Version: 1.0';
$headers[1]='Content-type: text/html; charset=iso-8859-1';
$headers[2]='From: '.$from_email_name.'<'.$from_email_address.'>';
$from = $from_email_address;
$subject = $email_subject;
$catre = $to_email_address;
$email_text = str_replace("\n", "\r\n", $email_text);
sock_mail(1,$catre,$subject,$email_text,$headers,$from);

Inviato: 24/06/2008, 15:44
da hsg26
SOLUZIONE 2: Forse la più probabile

(probabilmente non va con il safe mode attivato).

In includes/classes/email.php and admin/includes/classes/email.php

Trovare:

if (EMAIL_TRANSPORT == 'smtp') {
return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));
} else {
return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers));
}


E aggiungere il 5° parametro alla mail function "-f".STORE_OWNER_EMAIL_ADDRESS che farà diventare il tutto:

if (EMAIL_TRANSPORT == 'smtp') {
return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers),"-f".STORE_OWNER_EMAIL_ADDRESS);
} else {
return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers),"-f".STORE_OWNER_EMAIL_ADDRESS);
}

Verificare poi che in: admin/configuration.php?gID=1&cID=3&action=edit sia inserito un'email valido, ospitato sullo stesso server del negozio (non email gratis come Yahoo! o Gmail o altro).

Inviato: 24/06/2008, 15:51
da hsg26
TERZA SOLUZIONE:

installare questa contribution:

http://www.oscommerce.com/community/contributions,901

Inviato: 24/06/2008, 15:52
da hsg26

Inviato: 24/06/2008, 15:55
da hsg26
QUINTA:

IN ADMIN My Store-->E-mail From-->

Cambiare

kenny@yourdomain.com<kenny@yourdomain.com> in


kenny@yourdomain.com

Inviato: 24/06/2008, 15:57
da hsg26
Per vedere se il problema è di oscommerce o dell'host:

http://www.oscommerce.com/community/contributions,1595

Inviato: 24/06/2008, 16:02
da hsg26

Inviato: 24/06/2008, 19:58
da ciccio78
Problema risolto, effettivamente basta poco (non essere pigri come me)

grazie ancora :)

Inviato: 24/06/2008, 20:02
da hsg26
ciccio78 ha scritto:
Problema risolto, effettivamente basta poco (non essere pigri come me)

grazie ancora :)
con quale?

Inviato: 24/06/2008, 21:06
da ciccio78
hsg26 ha scritto:
con quale?
con la QUARTA

Inviato: 25/06/2008, 22:40
da stepro
l'ho provate tutte , ma niente da fare! :cry: :cry:
se imposto come email xxxx@libero.it l'email non arriva
se imposto come email xxxxx@miosito.it l'email arriva perfettamente

impostazioni E-Mail Transport Method sendmail

stepro

Inviato: 26/06/2008, 6:10
da hsg26
stepro ha scritto:l'ho provate tutte , ma niente da fare! :cry: :cry:
se imposto come email xxxx@libero.it l'email non arriva
se imposto come email xxxxx@miosito.it l'email arriva perfettamente

impostazioni E-Mail Transport Method sendmail

stepro
beh questo indirettamente è anche logico. Per prevenire lo spam, i provider verificano al contrario se l'indirizzo corrisponde al server che l'ha mandato. In più di una delle soluzioni è esplicitamente dichiarato di non usare altre email se non quelle del proprio server.

Comunque qui ci sono sei soluzioni, le hai provate tutte? quali si e quali no?

Inviato: 26/06/2008, 10:33
da stepro
Certo che è strano !

Sono stato fino alle 2 di questa mattina , provandole tutte , ma niente da fare , poco fà sono arrivate da Libero oltre 50 email , tutte le prove fatte ieri!
Come email del mittente ho sempre lasciato info@cosedicasanostra.com
e come email del cliente ho provato sia con xxxx@libero.it che con xxxx@miosito.it quando impostavo quella di libero arrivava l'email di conferma ordine solo su info@cosedicasanostra.com , mentre se impostavo come email del cliente xxxx@miosito.it arrivano 2 conferma ordine una a info@cosedicasanostra.com e l'altra a xxxx@miosito.it .
Avevo pensato che il problema fosse dovuto a come viene formattata l'email , invece stamattina funziona benissimo ???????
Certo che Libero è strano !
Ora però non sò quale delle soluzioni a contribuito a risolvere il problema.

Inviato: 26/06/2008, 11:27
da ciccio78
io ripeto che la quarta soluzione sia quella migliore, le avevo provate anch'io tutte, ma oltre a libero avete provato con le mail di email.it ???

e poi ogni tanto a me capitava anche con yahoo.it non so a voi...