Fout bij e-nieuwsbrief
Ik heb jullie hulp nodig. Via Groupmail kan je een html laten inlezen en per email versturen (naar een groep mailadressen), zoals met het versturen van een nieuwsbrief.
Dit heb ik gedaan naar 800 man.
Het probleem is:
Bij de ene komt het helemaal goed aan (hij krijgt de nieuwsbrief in de email te zien), maar de ander krijgt een lege email te zien (dus een blanco email). Terwijl ze bijvoorbeeld beide MS Outlook 2003 gebruiken.
Hoe kan dit? Komt het door een emailscanner (van virusscanner).
PS:
De html code is W3C standaard.
Dit is een header die we meesturen (logisch):
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
en dan met name dit : content="text/html;
geeft bij mij ook problemen.
ik heb van html ==> plain gemaakt.
Geeft dat bij jou ook problemen met de email? Heb jij soms hetzelfde probleem?
Dit was een tijdje geleden ook onder de aandacht en heb dit toen met belangstelling gevolgd en zelf steeds weer aangepast in mijn nieuwsbrief met als gevolg dat ik het nu heb staan zoals hierboven vermeld.
Dit is namelijk de enige reden die ik kan verzinnen.
Maar dan is het gek dat bij 2 dezelfde virusscanners de ene wel wordt geblockt en de ander niet.
Heel vreemd en ik buig mijn hoofd er niet meer over en hou het gewoon op plain.
Wou dit toch met je delen niet dat ik echt een oplossing aandraag maar meer delen van ervaring...
ik weet hoe je dit oplost, ik zoek even voor je kom ik zo op terug
Alvast bedankt
@lissy
Maakt niet uit. Ik vind het allang leuk dat je meepraat :)
Gewijzigd op 08/02/2006 16:17:00 door Barman V
edit: ik maak dr dus phps van :) momentje
edit2: uve got pm :)
Gewijzigd op 08/02/2006 16:57:00 door - wes -
laat me even weten als het is gelukt, haal ik het bestand er weer vanaf
Tis namelijk erg vervelend als je een nieuwsbrief stuurt naar 800 klanten en de helft krijgt een blanco mail.
Voor 17.00u krijg je reactie :)
@lissy
Bedankt voor het meedenken :D
Door refreshen was deze reactie dubbel. Vandaar dat ik hem ff bewerk.
Ik heb je code overgenomen. Ik heb er veel vertrouwen in.
Btw: is de extensie .phps verplicht?
Gewijzigd op 09/02/2006 10:01:00 door Barman V
test de code maar even, vooral bijvoorbeeld je 5th parameter ('-f'.$from) is niet altijd een must bij mailservers en sommige programmas accepteren het niet eens
Via phpfreakz.nl heb ik een script gevonden.
http://www.phpfreakz.nl/library.php?sid=20561
Ik was erg enthousiast over dit script, totdat ik weer reacties van een aantal klanten kreeg dat de mail niet goed was aangekomen (iets van 25 uit 670).
Zij kregen bijvoorbeeld:
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: base64
Cgk8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1
czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRp
b25h
bC8vRU4iPgoJPGh0bWw+Cgk8aGVhZD4KCTx0a
XRsZT5KdW5nbGUgUmF0aW5nIE5pZXV3c2Jy
bC8vRU4iPgoJPGh0bWw+aWVm
IEUtY29tbWVyY2Ugd2VlayA2PC90aXRsZT4KCTx
tZXRhIG5hbWU9IlRpdGxlIiBjb250ZW50
PSJK
dW5nbGUgUmF0aW5nIE5pZXV3c2JyaWVmIEUtY
29tbWVyY2UgIHdlZWsgNiI+Cgk8bGluayBy
dW5nbGUgUmF0aW5nIE5pZXV3c2JyaWVmIEU
tY29tbWVyY2UgIHdlZWsgNiI+ZWw9
enz enz.
Misschien dat jullie weten wat het probleem is?
Gewijzigd op 22/02/2006 09:11:00 door Barman V
Dit kan je in programma's als Groupmail makkelijk instellen.
Zou dit een oplossing kunnen zijn?
verzend je die 800 mailtjes stuk voor stuk?
Wat bij mij werkt: maak één mailtje met alle adressen in het BCC veld. Hierbij maak ik gebruik van de PHPMailer class. Die kun je hier downloaden.
Zorg dat het bestand class.phpmailer.php in dezelfde map staat als je script.
Ik ga uit van een formulier met een tekstveld dat 'subj' heet en een textarea die 'body' heet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
require ('class.phpmailer.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$members = file ('../data/members.txt');
$n = count ($members);
$msg = '';
$mail = new PHPMailer ();
$mijn_adres = '[email protected]';
$mail->AddAddress ($mijn_adres);
$mail->From = $mijn_adres;
$mail->FromName = 'Mijn maillijst';
$mail->AddReplyTo ($mijn_adres);
$mail->Subject = stripslashes ($_POST['subj']);
$mail->Body = stripslashes ($_POST['body']);
for ($i = 0; $i < $n; $i++) {
list ($naam, $email) = explode ('|', $members[$i]);
$mail->AddBCC ($email);
}
if ($mail->Send ()) {
$msg = '<p>De mail is verzonden</p>';
}
}
?>
require ('class.phpmailer.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$members = file ('../data/members.txt');
$n = count ($members);
$msg = '';
$mail = new PHPMailer ();
$mijn_adres = '[email protected]';
$mail->AddAddress ($mijn_adres);
$mail->From = $mijn_adres;
$mail->FromName = 'Mijn maillijst';
$mail->AddReplyTo ($mijn_adres);
$mail->Subject = stripslashes ($_POST['subj']);
$mail->Body = stripslashes ($_POST['body']);
for ($i = 0; $i < $n; $i++) {
list ($naam, $email) = explode ('|', $members[$i]);
$mail->AddBCC ($email);
}
if ($mail->Send ()) {
$msg = '<p>De mail is verzonden</p>';
}
}
?>
in de documentatie die bij de phpmailer class zit, kun je ook vinden hoe je HTML mails verstuurt. Succes!
edit: dit voorbeeld maakt gebruik van een platte tekstfile (klant heeft geen MySQL) maar de code ombouwen naar MySQL kun je zelf neem ik aan wel.
Gewijzigd op 22/02/2006 09:38:00 door Jan Koehoorn
Het ziet er weer veelbelovend uit. Ik ga hier meteen mee aan de slag.
Voorheen deed ik het met Groupmail (en het mailscriptje van phpfreakz).
Het zijn nieuwsbrieven, dus er moet html in :)
Ik neem aan dat je bedoelt dat de klanten in een mysql db staan en dat ik een selectquery moet draaien om naar alle klanten te sturen. Dat is geen probleem :).
edit:
Wij versturen via smtp.tiscali-business.nl
Kan daar ook de oorzaak liggen van de foutieve mailtjes. Dan zal ik ze wel ff bellen :)
Gewijzigd op 22/02/2006 09:46:00 door Barman V
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "smtp1.site.com;smtp2.site.com"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "jswan"; // SMTP username
$mail->Password = "secret"; // SMTP password
$mail->From = "[email protected]";
$mail->FromName = "Mailer";
$mail->AddAddress("[email protected]","Josh Adams");
$mail->AddAddress("[email protected]"); // optional name
$mail->AddReplyTo("[email protected]","Information");
$mail->WordWrap = 50; // set word wrap
$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
$mail->Subject = "Here is the subject";
$mail->Body = "This is the <b>HTML body</b>";
$mail->AltBody = "This is the text-only body";
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "smtp1.site.com;smtp2.site.com"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "jswan"; // SMTP username
$mail->Password = "secret"; // SMTP password
$mail->From = "[email protected]";
$mail->FromName = "Mailer";
$mail->AddAddress("[email protected]","Josh Adams");
$mail->AddAddress("[email protected]"); // optional name
$mail->AddReplyTo("[email protected]","Information");
$mail->WordWrap = 50; // set word wrap
$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
$mail->Subject = "Here is the subject";
$mail->Body = "This is the <b>HTML body</b>";
$mail->AltBody = "This is the text-only body";
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>
Dan moet je waarschijnlijk class.smtp.php in dezelfde map als je script hebben staan (ff uittesten).
Alleen moet ik zeker weten dat dit script wel goed is.
Toen ik het scriptje van phpfreakz gebruikte en de mails verzond, verzond hij ook een email naar mijn collega. Het mailtje werd verstuurd naar zijn webmail, maar hij importeerd dat in zijn Outlook. Het geimporteerde mailtje kwam gecodeerd aan (in Outlook), maar toen hij dat mailtje wilde bekijken in zijn webmail, was het gewoon goed te lezen. Beetje raar.
Wat houdt die 2e smtp server in? Het is een backup smtp, houd dat in dat als bijvoorbeeld smtp.tiscali-business.nl het af laat weten dat dan smtp.userve.nl het overneemt?
Aan de andere kant ben ik juist niet helemaal tevreden. Waarom laat hij de plaintekst zien, terwijl de client wel html kan lezen? Heeft het misschien met IMAP te maken?
Is het trouwens veilig om 700 mailtjes via PHP te sturen ipv een programma zoals Groupmail?
Alvast bedankt