Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ja mail ei aina lähetä sähköpostia

xxmss [31.08.2018 09:00:02]

#

Minulla on Apache-palvelimella PHP-skripti, joka lähettää sähköpostin. Osa vastaanottajista on kuitenkin ilmoittanut, etteivät ole koskaan saaneet sähköpostia. Onko antaa vinkkejä tilanteen parantamiseksi?

Olen vaihtanut domainnimen alkuosan merkkijonoksi ---.

$email ja $sahkopostitettava_salasana saavat arvoikseen merkkijonot. $email on varmasti oikeassa muodossa.

$header = "From: ---.org <info@---.org>\n";
$header .= "Content-type: text/plain; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit";

$emailin_otsikko = "---.org-käyttäjän kirjautumistiedot";

$viesti = "Hei!\n\n";

$viesti .= "Uudet kirjautumistietosi ---.org-palveluun ovat alla.\n\n";

$viesti .= "Käyttäjätunnus:\n";
$viesti .= $email . "\n\n";

$viesti .= "Salasana:\n";
$viesti .= $sahkopostitettava_salasana . "\n\n";

$viesti .= "Toistaiseksi käyttäjätunnus toimii tapahtumiin ilmoittautumisen\n";
$viesti .= "yhteydessä. Sisäänkirjautuminen onnistuu tunnuksillasi osoitteessa\n";
$viesti .= "https://www.---.org/.\n\n";

$viesti .= "Jos sinulla on kysyttävää kirjautumiseen liittyen, voit lähettää\n";
$viesti .= "sähköpostia osoitteeseen info@---.org.";

@mail($email, $emailin_otsikko, $viesti, $header);

groovyb [31.08.2018 09:59:01]

#

Tallenna virhelokit, jotta voit tarkastella syytä:

$success = mail($email, $emailin_otsikko, $viesti, $header)
if (!$success) {
    $errorMessage = error_get_last()['message'];
    //Tee jotain virheviestillä
}

The Alchemist [31.08.2018 11:04:58]

#

Virallisestihan otsikkotiedoissa rivinvaihto on \r\n. Enkoodaamattomat ääkköset voivat nostaa spammipisteitä, samoin se jos ilmoitat charsetin väärin. On hyvin tavallista kirjoittaa koodi utf8-merkistöllä, joten oletko varma, että tuo koodiin kirjoitettu viesti lähtisi jonain muuna? Kerjäät kyllä vain ongelmia, ellet käytä unicodea kaikkialla koodissasi.

Ja nykypäivänä on mielestäni ihan päätöntä räpeltää php:n standardikirjastolla ja yrittää arpoa viestejä kuntoon käsin. Asenna SwiftMailer-niminen kirjasto ja käytä sitä viestien lähettämiseen. Ja on noita varmasti kevyempiäkin vaihtoehtoja, jos lähettelet vain plaintextiä ilman liitteitä.

Varmasti kaikki sähköpostipalvelut myös liittävät spammipisteet vastaanotetun viestin lähdekoodiin, joten voit lähettää itsellesi viestin (huom: samaa järjestelmää käyttäen, jotta kaikki virheet tulevat esille), avata sen lähdekoodin ja tarkastella sieltä mahdollisia syitä. Spammiluokittelu vaihtelee kuitenkin palvelukohtaisesti, mutta aika pitkälle pääsee sillä, että korjaa ne yleisimmät virheet, jotka huomataan kaikissa palveluissa.

Grez [31.08.2018 11:22:56]

#

Samalla kannalla The Alchemistin kanssa...

Oman kokemuksen (joidenkin vuosien takaa) mukaan PHP:n mail -funktio oli varma tapa saada viestit spämmikansioon. Päädyin toteuttamaan viestien lähettämisen jotain ulkoista sähköpostiluokkaa käyttäen.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta