Domanda

Sto cercando di inviare un'e-mail da un sito che sto costruendo, ma finisce nella cartella spam di Yahoo. È l'e-mail che invia le credenziali. Cosa posso fare per legittimarlo?

$header = "From: site <sales@site.com>\r\n";
$header .= "To: $name <$email>\r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site <sales@site.com>" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);
È stato utile?

Soluzione

Oltre ai suggerimenti di Ted Percival, potresti provare a utilizzare PHPMailer per crea le e-mail per te anziché creare manualmente le intestazioni. Ho usato ampiamente questa classe e non ho avuto problemi con il rifiuto della posta elettronica come spam da parte di Yahoo o di chiunque altro.

Altri suggerimenti

  • Non utilizzare HTML nella tua email.
  • Invialo tramite un server di posta legittimo con un IP statico e DNS inverso (PTR) che punta al nome host reale della macchina (e corrisponde a una ricerca diretta).
  • Includi un ID messaggio (o assicurati che il mailer locale ne aggiunga uno per te).
  • Esegui la tua e-mail tramite SpamAssassin e vedi a quali regole del punteggio cattivo corrisponde. Evita di abbinarli.
  • Utilizza Mail identificata DomainKeys per firmare digitalmente i tuoi messaggi.

Ho appena provato con successo quanto segue dal mio Yahoo! Account di hosting Web:

$email = "me@site.com";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "To: $name \r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site " . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Tuttavia, hai delle duplicazioni nell'intestazione, dovresti solo fare quanto segue:

$email = "me@site.com";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

C'è anche la possibilità che 'sendmail' (che si trova sotto la funzione mail () di PHP) abbia bisogno di parametri extra. Se hai un problema con le intestazioni di ritorno (come Return-Path) che non sono impostate su come le hai impostate, potrebbe essere necessario utilizzare il parametro 5th mail (). Esempio:

mail('recipient@domain.com', 'Subject', $mail_body, $headers, " -f sender@domain.com");

Ci sono ulteriori prove che il vero sendmail alla vaniglia potrebbe avere problemi con questo! Spero che tu abbia "postfix" come supporto mail () sottostante di PHP sul tuo server di destinazione.

Oltre a I suggerimenti di Ted Percival , assicurati che l'indirizzo IP da cui proviene l'email sia una fonte legittima per l'e-mail in base al Record SPF di site.com. Se site.com non ha un record SPF, l'aggiunta di uno (che consente l'indirizzo IP in questione, ovviamente) può aiutare a superare i filtri antispam delle e-mail.

E se hai assolutamente bisogno di usare HTML nella tua e-mail, assicurati di includere anche una versione in testo normale; useresti il ??tipo di contenuto di " multipart / alternative " invece di " text / html " ;.

I suggerimenti di Ted sono buoni, così come quelli di Tim, ma l'unico modo in cui sono mai stato in grado di inviare e-mail in modo affidabile a Yahoo / Hotmail / etc è utilizzare le classi di e-mail PEAR. Prova quelli & amp; (supponendo che il tuo server sia OK) Posso praticamente garantire che funzionerà.

Ted e Tim hanno ottimi suggerimenti. Come Shabbyrobe. Usiamo PHPMailer e non abbiamo problemi con i filtri antispam.

Una cosa da notare è che molti filtri antispam contano di NON avere una versione testuale se stai utilizzando un formato MIME. Puoi aggiungere tu stesso tutte le intestazioni e la versione testuale, oppure lasciare che PHPMailer o la libreria di posta PEAR se ne occupino per te. Avere una versione testuale può essere utile o meno, ma è una buona pratica e facile da usare.

Mi rendo conto che il tuo esempio di codice è proprio questo: un esempio, ma vale la pena dire: non lasciare mai cadere i dati forniti dagli utenti nelle intestazioni della posta. Assicurati di confermare che sono i dati che ti aspetti. È banale trasformare uno script di posta php in un relay aperto, e nessuno lo vuole.

Controlla rfc 822 e rfc 2045 per il formato e-mail. Trovo che la classe Email di Python sia davvero facile da lavorare. Presumo che PEP di php faccia lo stesso (secondo le mail precedenti). Anche l'intestazione e il corpo sono separati da un " \ r \ n \ r \ n " ;, non sono sicuro che il tuo codice lo inserisca automaticamente, ma puoi provare ad aggiungerlo all'intestazione.

Non penso che DK / SPF potrebbe essere necessario (dal momento che ci sono molti server web là fuori senza supporto DK / SPF). Ci possono essere molti fattori che potrebbero causarne il blocco (almeno 10 K criteri e metodi diversi .. p0f, greylisting, greylisting, blacklisting etc etc). Assicurati che il tuo indirizzo email sia formattato correttamente (questo fa una GRANDE differenza). Cerca nelle librerie che generano l'intestazione completa per te .. in questo modo hai meno possibilità di commettere errori.

L'aggiunta di un record SPF è molto semplice. Dovresti provare.

Questo è per dreamhost più googlemail Dovresti anche inserire il tuo indirizzo IP del server web (nel mio caso, la riga prima di googlemail) L'ultima riga dice al server di eseguire un rifiuto morbido (contrassegnare come spam ma non eliminare) lo sto usando invece di " - " (elimina) perché la documentazione di Google lo dice :-)

È un record TXT v = spf1 ip4: 64.111.100.0/24 ip4: 66.33.201.0/24 ip4: 66.33.216.0/24 ip4: 208.97.132.0/24 ip4: 208.97.187.0/24 ip4: 208.113.200.0/24 ip4: 208.113.244.0/24 ip4: 208.97.132.74 ip4: 67.205.36.71 comprendono: aspmx.googlemail.com mx ~ all

Spero che sia d'aiuto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top