Tarkoituksena on lähettää sähköpostia php skriptillä. Jos olen ymmärtänyt oikein, normaali mail() funktio pelkästään ei toimi yleisissä mailipalveluissa.
Googlaamalla ja muokkailemalla olen päätynyt seuraavaan koodiin, mutta se ei vieläkään suostu lähettämään mailia.
<?php include("Mail.php"); /* mail setup recipients, subject etc */ $recipients = "myname@yahoo.com"; $headers["From"] = "My Name <myname@gmail.com>"; $headers["To"] = "myname@yahoo.com"; $headers["Subject"] = "Hi"; $mailmsg = "Hello, This is a test."; /* SMTP server name, port, user/passwd */ $smtpinfo["host"] = "tls://smtp.gmail.com"; $smtpinfo["port"] = "465"; $smtpinfo["auth"] = true; $smtpinfo["username"] = "myname@gmail.com"; $smtpinfo["password"] = "mypassword"; /* Create the mail object using the Mail::factory method */ $mail_object =& Mail::factory("smtp", $smtpinfo); /* Ok send mail */ $mail = $mail_object->send($recipients, $headers, $mailmsg); if (PEAR::isError($mail)) { echo("<p>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message successfully sent!</p>"); } ?>
Kyseinen koodi tulostaa: "Validation failed for: My Name".
Käyttäkänimi ja salasana ovat oikein, koska muuten koodi printtaa "unable to authenticate to smtp server".
Gmailin asetuksissa olen laittanut "Status: IMAP is enabled".
Mikä voisi olla pielessä?
Vaihoithan ainaki tohon usernameen oman gmail ossas, ja ehkä lähettäjäkin (from) pitää olla oma osoite? Kuhan arvailen.
Kun kerta valittaa tosta "My Name":sta, niin siitä vois päätellä, et ehkä se pitäs olla sun oma tunnus?
Juuri äskettäin säädin oman Exim-palvelimeni sallimaan postin lähetyksen ulkomaailmaan. Yksi kohtaamani virheilmoitus oli juuri tuo, ja ongelmana oli, että Exim oli säädetty tarkistamaan lähettäjän osoite. Luultavasti näin on omassakin tapauksessasi, ja tämä on Googlelta vähintäänkin järkevä varotoimi, kun Gmailin käyttäjien henkilöllisyyttä ei pystytä kuitenkaan juuri valvomaan.
Yleensä oman ISP:n kautta saa läheteltyä paremmin, ainakin Elisan ja Soneran postipalvelimille tuntuu kelpaavan mikä tahansa heidän liittymistään lähetetty.
Matso, kaikki osoitteet ja salasanat on muunnettu. Kaikki on omia tunnuksia.
Metabolix, tarkotus olisi tehdä rekisteröitymismahdollisuus nettisivulle. Sivusto lähettäisi sähköpostin sivuston adminille.
Tarkoititko, että gmail tarkistaa sen osoitteen, mistä kyseinen sähköposti tulee (www.<domain>.fi), vai lähettäjän sähköpostiosoitteen (myname@gmail.com)?
Joka tapauksessa, eikö gmailille riitä, että tämä sähköpostin lähettäjä (php skripti) tietää oman käyttäjätunnuksensa ja salasanansa?
Touho kirjoitti:
Joka tapauksessa, eikö gmailille riitä, että tämä sähköpostin lähettäjä (php skripti) tietää oman käyttäjätunnuksensa ja salasanansa?
Jos sähköpostipalvelimellasi olisi osoite nimeltä pekka@sivustosi.net, antaisitko pekan lähettää viestin, jonka lähettäjäksi on merkitty "Touho <ylläpitäjä@sivustosi.net>"?
Jos tuossa koodissasi ei ole mitään vikaa, on vika tiedostossa Mail.php. Löysin Googlella linkin, jonka takaa voit katsoa miten joku muu on asian toteuttanut.
Touho kirjoitti:
Tarkoititko, että gmail tarkistaa sen osoitteen, mistä kyseinen sähköposti tulee (www.<domain>.fi), vai lähettäjän sähköpostiosoitteen (myname@gmail.com)?
Jälkimmäisen näistä, sehän valittaakin lähettäjästä "My Name". Ensimmäisellä ei luonnollisesti ole väliä, kun kotikoneellakin voi olla ihan mikä tahansa domain.
Touho kirjoitti:
Joka tapauksessa, eikö gmailille riitä, että tämä sähköpostin lähettäjä (php skripti) tietää oman käyttäjätunnuksensa ja salasanansa?
Ei, kuten ville-v jo selittikin. Itsekin yritin asiasta jo mainita, kun sanoin, ettei Gmail pysty valvomaan käyttäjiään. Sinnehän saa kuka tahansa käytännössä anonyymisti tunnukset, joten on vähintäänkin kohtuullista, että spammaajan saa potkaistua pois suoraan poistamalla osoitteen, josta spammia lähtee. Olisi paljon työläämpää kaivella lokitiedostosta jälkikäteen, kenen tunnuksilla jokin viesti on lähetetty.
Aihe on jo aika vanha, joten et voi enää vastata siihen.