Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sähköpostin lähettäminen usealle

Sivun loppuun

late [24.07.2013 12:51:36]

#

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?

p99o [24.07.2013 15:02:13]

#

while-silmukka.
Eli haet tietokannasta (oletan näin) ne joille haluat postin lähettää
(PDO-opas: https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=mysqlphp02)

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.

late [24.07.2013 20:00:58]

#

juu kiitos nyt toimii..

Teen WordPressin sisässä eli käytän vähän eri mail funktiota ja sitten foreachilla array läpi..

groovyb [24.07.2013 23:07:51]

#

Muistappa lisätä ne 150 vastaanottajaa sitten bcc:ksi. Muuten voi tulla vähän harmia toisten yhteystietojen levittämisestä.

Macro [25.07.2013 09:47:02]

#

Jos ne lähettää erikseen, niin eihän silloin ne näy toisille.

late [25.07.2013 13:19:16]

#

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/tapahtumainfo/?id=349">TESTI1: 12.07.2013 klo. 10:00-15:30 (HKI)</a>

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";

Olli [25.07.2013 17:37:48]

#

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)

late [26.07.2013 11:05:03]

#

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..

The Alchemist [26.07.2013 12:01:56]

#

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.

late [26.07.2013 12:14:02]

#

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);

Grez [26.07.2013 12:54:30]

#

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.

late [26.07.2013 16:20:56]

#

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).

vesikuusi [26.07.2013 17:15:32]

#

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).

The Alchemist [26.07.2013 17:35:34]

#

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.

late [26.07.2013 17:46:17]

#

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..

kaviaari [27.07.2013 12:40:01]

#

Dokumentaatiossa joka linkitettiin toka esimerkki on suoraan vastaus kysymykseesi. Nyt valoja päälle!

vesikuusi [27.07.2013 14:43:57]

#

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.

The Alchemist [27.07.2013 16:53:32]

#

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.

Metabolix [28.07.2013 10:57:28]

#

// 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);

essi97 [28.07.2013 21:23:24]

#

Oliskohan joku kansalaisopiston seniorikurssi nauhoittanut premium tuts -videon sähköpostin käytön perusteista?

late [29.07.2013 09:26:53]

#

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).

henkkeli [29.07.2013 10:43:47]

#

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.

tmub [29.07.2013 11:17:00]

#

henkkeli kirjoitti:

Dummy tarkoittaa tässä tapauksessa "placeholder" -osoitetta...

Tässä tapauksessa sillä varmaan tarkoitetaan itse Latea. HAHAHA

late [29.07.2013 12:08:26]

#

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!

vesikuusi [29.07.2013 13:01:42]

#

:D

qeijo [29.07.2013 19:58:39]

#

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?

tmub [29.07.2013 21:24:10]

#

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 :(


Sivun alkuun

Vastaus

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

Tietoa sivustosta