Hei,
Jälleen tällainen yleinen kysymys. Kun ylläpitäjä luo uuden tapahtuman niin haluaisin lähettää sähköpostin usealle käyttäjälle (n.150kpl).
Osaatteko sanoa mikä olisi järkevä tapa toteuttaa tämä PHP?
while-silmukka.
Eli haet tietokannasta (oletan näin) ne joille haluat postin lähettää
(PDO-opas: https://www.ohjelmointiputka.net/oppaat/opas.
include_once("database.php"); $query = $dbconnection->prepare("SELECT email FROM ... "); $query->execute(array()); while($result = $query->fetch()) { $mail = $result['mail']; mail($mail,'','',''); }
Jotenkin näin varmaankin.
juu kiitos nyt toimii..
Teen WordPressin sisässä eli käytän vähän eri mail funktiota ja sitten foreachilla array läpi..
Muistappa lisätä ne 150 vastaanottajaa sitten bcc:ksi. Muuten voi tulla vähän harmia toisten yhteystietojen levittämisestä.
Jos ne lähettää erikseen, niin eihän silloin ne näy toisille.
juu.. eli käyn läpi foreachilla ja ainakin testikäytössä jokainen 3 henkilöstä sai sähköpostin.
Otsikkona: websivu + tapahtuman nimi
Sisältönä: Tapahtuma, pvm, klo, sijainti
Eli käyttäjä näkee jo sähköpostista millainen tapahtuma kyseessä ja ajankohta. Sitten esim. kun on bussissa niin kiva saada maili kännykkään ja jne. Oikeastaan tuo sisältötieto voisi olla LINKKI itse tapahtuman tapahtumainfo -sivulle, jossa voisi varata työvuoron.
..kumma etten aikasemmin keksinyt tuota.
Lisäys:
Hei,
Nyt tällainen ongelma. Alla koodi + tulostus:
$email_message = '<a href="' . home_url('/tapahtumat/tapahtumainfo/?id=') . $e_id . '">' . $event_name . ': ' . $event_date . ' klo. ' . $event_time_start . '-' . $event_time_stop . ' (' . $event_location . ')</a>';
<a href="http://www.latenblogi.com/tapahtumat/
Eli nuo <a href=" ja </a> näkyvät sellaisenaan. Kumma kyllä itse linkki on täysin toimiva. Miten noista pääsisi eroon? Eli vain pelkkä sininen linkki näkyisi...
Lisäys:
Noniin.. nyt tuli lisättyä tämä pätkä ja ainakin testauksessa toimii:
// Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
Huomioi, että joillakin palvelimilla saattaa olla rajoituksia lähetettävien viestien määrässä. Esim. Suncometilla se on 100 viestiä / h (https://suncomet.com/index.php?faqc)
Ok, kiitos pointista. Ainakin 80 viestiä lähtee (foreach). Nyt tuo linkki on ainakin mukava kun pääsee suoraan tapahtuman kohdalle. Toisaalta mitä tapahtuukaan jos ei ole sisäänkirjautunut palveluun...
No joo..
Ei oo mitään järkeä kutsua lähettää jokaiselle vastaanottajalle samaa viestiä erikseen. Määritä yhdelle viestille useampi bcc-vastaanottaja, jolloin voit lähettää viestin vain yhden kerran, ja sähköpostipalvelin hoitaa varsinaisen lähettämisen työn.
huoh.. juu tuo varmasti paras tapa. Voitko hieman selittää tuota -> bbc-vastaanottaja
// To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers $headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n"; $headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n"; $headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n"; // Mail it mail($to, $subject, $message, $headers);
Mitä siitä käytännössä haluaisit selvitettävän? BCC on "Blind Carbon Copy" eli sama kuin CC ("Carbon Copy") eli kopio sillä erotuksella, että ko. listalla olevat vastaanottajat eivät näy (muille) vastaanottajille. Eli "Blind" tarkoittaa että ei näy.
Tarkoitan sitä että nyt minulla näin:
// Lähetetään kaikille työntekijöille sähköposti... if ($email_all === 'laheta' && $event_status == 1) { // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; // Kaikki sähköpostiosoitteet $all_user_emails = $wpdb->get_results($wpdb->prepare("SELECT user_email FROM $wpdb->users")); // Käydään läpi kaikki osoitteet... foreach ($all_user_emails as $single_user_email) { $email_to = $single_user_email->user_email; $email_subject = 'YRITYS X (uusi tapahtuma): ' . $event_name; $email_message = '<a href="' . home_url('/tapahtumat/tapahtumainfo/?id=') . $e_id . '">' . $event_name . ': ' . $event_date . ' klo. ' . $event_time_start . '-' . $event_time_stop . ' (' . $event_location . ')</a>'; wp_mail($email_to, $email_subject, $email_message, $headers); }
Eli lisätäänkö tuohon $headers kohtaan tuo BCC johon jotenkin haetaan kaikki email osoitteet kannasta..? En ihan äkkiseltään osaa tämän koodin sekaan laittaa noita osoitteita. Huom! tuo wp_mail (on WordPressin oma funktio).
Luoja olkoon sinulle armollinen, kun et koodejasi sisennä.
Lisäys: Miten olisi otsikko "Using $headers To Set "From:", "Cc:" and "Bcc:" Parameters" wp_mail-funktion dokumentaatiosta? Huom! tuota wp_mail-funktiota (käytetään ihan samalla tavalla kuin php:n mailia).
En oo koskaan tajunnut, miksi php:stä tehtiin pelkkä c:n standardikirjaston tyhmennys, mutta ehkä näköni vielä joskus hämärtyy ja se mysteeri ratkeaa. Sen sijaan mulle on täysin mahdotonta sulattaa sitä, että WordPressiin on kääritty php:n eli c-kielen funktiot kolmannen kerran samaan vanhaan paskaan.
noniin.. minun ero teihin on se että te ymmärrätte manuaalia lukemalla asioita.
Mitä tässä haetaan?
$headers[] = 'From: Me Myself <me@example.net>'; $headers[] = 'Cc: John Q Codex <jqc@wordpress.org>'; $headers[] = 'Cc: iluvwp@wordpress.org'; wp_mail( $to, $subject, $message, $headers );
Minulla on jo array, jossa kaikki email osoitteet. Ja tuo ensimmäinen kohta $to laitetaanko siihen vain yksi osoite, esim. oma... huoh..
Dokumentaatiossa joka linkitettiin toka esimerkki on suoraan vastaus kysymykseesi. Nyt valoja päälle!
Jos et late ymmärrä dokumentaatiota lukemalla, ei ohjelmointi ole ehkä paras tapa käyttää aikaa, jonka voisit käyttää omalta kannaltasi järkevien asioiden opetteluun.
Viitaten siis tähän:
late kirjoitti:
noniin.. minun ero teihin on se että te ymmärrätte manuaalia lukemalla asioita.
Se on ainoastaan omasta motivaatiosta kiinni, jossei muka ymmärrä asioita alkuperäisestä lähteestä, mutta kuitenkin olevinaan tajuaa ne, jos joku putkalainen copy-pasteaa samat asiat tähän ketjuun.
// Käytä vastaanottajana esim. omaa osoitetta tai jotain firman dummy-osoitetta. $to = "asiakkaat@omafirma"; // Hae osoitteet tietokannasta. $osoitteet = array("laten@osoite", "liisan@osoite"); // Laita Bcc-otsikot. $headers = array(); foreach ($osoitteet as $osoite) { $headers[] = "Bcc: {$osoite}"; } // Lähetä viesti. wp_mail($to, $subject, $message, $headers);
Oliskohan joku kansalaisopiston seniorikurssi nauhoittanut premium tuts -videon sähköpostin käytön perusteista?
Okei, kiitän suuresti MB.. tuota miksi tuohon pitää laittaa nk. "dummy-osoite" nyt ihan oikea asiakaspalvelu osoite. Tämä siksi että saapuneeseen sähköpostiin voi halutessa vastata takaisin...
no en tiedä onko siihen nyt koskaan tarvetta. Myös itse sähköposti näyttää paljon virallisemmalta? Muutan nyt koodin, vaikkakin kaikki toimii tällä hetkellä 100%:sesti, niin turha kaiketi lähettää 100 postia aina yksi kerrallaan... tulee vielä sanomista webhotellin tarjoajalta.
Lisäys: Essille vielä terveisiä, että jos olet tyttö niin nalkutat kuin vanha akka (ei pahalla).
Dummy tarkoittaa tässä tapauksessa "placeholder" -osoitetta, eli joku tilapäinen osoite, koska funktio sellaisen tarvitsee.
Se ei siis ole se osoite johon käyttäjät lähettävät vastauksia. Viestin lähettäjänä näkyy headerin "From" -kentässä annettu osoite. Laita siihen joku "noreply@example.com" jos et halua vastauksia (tai vaihtoehtoisesti jokin toimiva osoite johon vastauksia voi lähettää).
Ja idea nyt siis oli että laittaisit KAIKKI vastaanottajat SAMAAN YHTEEN viestiin BCC:ksi. Ei yksi kerrallaan.
henkkeli kirjoitti:
Dummy tarkoittaa tässä tapauksessa "placeholder" -osoitetta...
Tässä tapauksessa sillä varmaan tarkoitetaan itse Latea. HAHAHA
Juu.. nyt tuossa placeholder kentässä on tosiaan aito osoite.. ajattelin että se näyttäisi jotenkin virallisemmalta. + lähettäjä (eli tässä tapauksessa yrityksen kotisivu)
..no joo aika paljon sitä oppii uutta jo pelkästään kun pitää sähköpostia lähettää ihmisille. Itse en välttämättä tarvitsisi aina tietoa uudesta työvuorosta kännykkääni, joten ehkä joudun jossain vaiheessa tekemään profiiliin mahdollisuuden poistaa itsensä email-listalta.
No joo tämä on ohjelmoinnin yksi hauskuuksista eli kun ensin koodaa jotain huomaa nopeasti ettei se riitä vaan homma pitää miettiä pitkän kaavan kautta uudestaan. Ihan samaan tapaan voisi alkaa kerran kuussa julkaisemaan jotain "newsletter" tyyppistä postia, mutta kiitos jälleen avusta!! ..ja tmub olet mustan listan kärkinimiä, onnittelut!
:D
Juu.. meilläkin laskee aika ajoin kaukolämmön paineet ~0.2 bar/kk. Joutuu vähän väliä lisäillä pari desiä vettä. Oletko koskaan maistanut?
qeijo kirjoitti:
Juu.. meilläkin laskee aika ajoin kaukolämmön paineet ~0.2 bar/kk. Joutuu vähän väliä lisäillä pari desiä vettä. Oletko koskaan maistanut?
Virvelihippaa merellä. Kuusitoista kolmiota ehkäisynä.
PS. Koska late saa banaania sivustolta? Toivottavasti ennen minua :(
Aihe on jo aika vanha, joten et voi enää vastata siihen.