[php] nieuwsbrief via google smtp

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo iedereen,

Ik ben een systeem aan het maken waardoor je nieuwsbrieven vanaf de website kan verzenden. In principe lukt dat allemaal wel, maar ik als ik lange tijd geen mail meer heb verstuurd, geeft dat een error op alle mailadressen. Als ik dan manueel weer inlog op mijn gmail-account, lukt het weer wel, ook al log ik daarna weer uit. Ik begrijp niet hoe dit komt en moet zeker opgelost geraken, want zo kan ik geen site uit handen geven.

Het versturen van de mails gebeurt met phpMailer en zit in een loop die de adressen overloopt.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        // Print out result
        //include phpmailer
        include("phpMailer/class.phpmailer.php");
        //set array
        $emailArray = array();
            while($row = mysql_fetch_array($result)){

            $emailArray[] = $row['email'];

        //leegmaken
        $mailingTextArea = "";
        //$_POST toevoegen
        $mailingTextArea .= $_POST['mailingTextarea'];
        //footer toevoegen vlak voor versturen:
        $mailingTextArea .= '<p align="center"><a href="http://xxxxxxx.xx/unsubscribe/'.$row['code'].'">** Unsubscribe **</a></p>';



$mail = new PHPMailer();

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "ssl://smtp.gmail.com"; // SMTP server
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = $gMailId;
$mail->Password = $gMailPassword;

$mail->From     = "xxxxxxxxx@gmail.com";
$mail->FromName = "xxxxxxx";
$mail->AddAddress($row['email'],'Jou...');
$mail->Subject     = "$mailingTitle";


// Geef aan dat het een HTML mail betreft
$mail->IsHTML(true);
$mail->Body     = nl2br($mailingTextArea);
$mail->AltBody     = strip_tags($mailingTextArea);

$mail->WordWrap = 500;

//verzenden:
if(!$mail->Send()) echo "There has been a mail error sending to " . $row["email"] . "<br>";

// Clear all addresses and attachments for next loop
$mail->ClearAddresses();



}


Alvast bedankt voor de hulp !! :)

[ Voor 0% gewijzigd door Verwijderd op 22-09-2008 22:39 . Reden: verbergen url ]


Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:31

remco_k

een cassettebandje was genoeg

Verwijderd schreef op maandag 22 september 2008 @ 20:03:
maar ik als ik lange tijd geen mail meer heb verstuurd, geeft dat een error op alle mailadressen.
Zo kunnen we niks.
Welke error?
Waar komt die error vandaan? (Van GMail, of uit je code?)
Op welke regel komt de error voor?
Wat heb je zelf al ondernomen?

offtopic:
Edit:
Waarom niet gewoon alle adressen in de BCC?

Edit2:
In je code staat een URL naar een site die nog maar half af is. Ik weet niet of je wilt dat er al bezoekers opkomen, zo niet, zet er dan even een vervanger neer.

[ Voor 43% gewijzigd door remco_k op 22-09-2008 20:08 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zo kunnen we niks.
Welke error?
Waar komt die error vandaan? (Van GMail, of uit je code?)
Op welke regel komt de error voor?
Enkel de error van phpMailer zelf. Ik heb geen idee hoe ik een error kan tonen die meer in detail gaat.
PHP:
1
2
//verzenden:
if(!$mail->Send()) echo "There has been a mail error sending to " . $row["email"] . "<br>";
Wat heb je zelf al ondernomen?
heel http://phpmailer.codeworxtech.com/index.php binnenstebuiten gezocht. Op de google account gezocht.
Op tweakers vond ik ook dit specifieke probleem niet
[offtopic]
Edit:
Waarom niet gewoon alle adressen in de BCC?
Omdat via een loop werd aangeraden als voorbeeld op de website van phpMailer
bovendien las ik dit op http://www.labnol.org/int...-sending-bulk-email/2191/
Rule 2. If you access Gmail from the browser, you may not address an email message to more than 500 people at a time. Try adding any more recipients in the To, CC or BCC field and your Gmail account will get probably disabled for 24-72 hours. Error: "Gmail Lockdown in Secton 4"
Edit2:
In je code staat een URL naar een site die nog maar half af is. Ik weet niet of je wilt dat er al bezoekers opkomen, zo niet, zet er dan even een vervanger neer.
[/offtopic]
Wat bedoel je daarmee? heb je het over de website zelf of over de code die ik hier laat zien in tweakers? Dit is een website voor mezelf. Dit is een originele kopie zal ik maar zeggen. De andere wordt al gebruikt met zijn eigen domeinnaam. Mij maakt het niet uit als er wat tweakers die zien. Of is dat onveilig voor een bepaalde reden?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
remco_k schreef op maandag 22 september 2008 @ 20:04:
[...]
Waarom niet gewoon alle adressen in de BCC?
Gokje spam filters?

Maar @TS zet gewoon zelf een mailserver neer die dit voor je kan afhandelen. Puur voor dit probleem is het waarschijnlijk wel af te handelen door eerst via pop3 je te laten authenticeren voordat je gaat versturen. Maar niets weerhoudt gmail ervan om de beveiliging te gaan veranderen waardoor je straks weer iets moet gaan aanpassen.
En bovenal vind ik persoonlijk gmail niet echt profi overkomen bij een nieuwsbrief, maar dat ben ik ( ik hanteer ook gewoon voor gmail / hotmail gewoon een pure whitelist )

Acties:
  • 0 Henk 'm!

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 08-09 16:22
Gomez12 schreef op maandag 22 september 2008 @ 20:42:
En bovenal vind ik persoonlijk gmail niet echt profi overkomen bij een nieuwsbrief, maar dat ben ik ( ik hanteer ook gewoon voor gmail / hotmail gewoon een pure whitelist )
Google Apps is wel degelijk professioneel en maakt onderdeel uit van Gmail.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Stephan4kant schreef op maandag 22 september 2008 @ 21:09:
[...]

Google Apps is wel degelijk professioneel en maakt onderdeel uit van Gmail.
Even over het hoofd gezien inderdaad. Ik vind het nog steeds niet professioneel ( is het al uit beta ), maar voor een gemiddelde MKB'er waarschijnlijk professioneel genoeg...
Professioneel is nou niet direct iets wat ikzelf associeer met 100% afhankelijk zijn van een gratis partner zonder SLA etc.die je zonder uitleg kan bannen wanneer het hun uitkomt ( noot : laatste nooit zien gebeuren irl. Maar volgens hun voorwaarden kan het, leuk als je daar je businesscase aan ophangt... )

Ik weet alleen dat ik mijn spamfilter hiervoor niet ga aanpassen.

Acties:
  • 0 Henk 'm!

  • 4rn0
  • Registratie: September 2008
  • Laatst online: 23-09-2021
Verwijderd schreef op maandag 22 september 2008 @ 20:42:

Enkel de error van phpMailer zelf.
Ik heb geen idee hoe ik een error kan tonen die meer in detail gaat.
PHP:
1
2
3
4
if (!$mail->Send()) {
    echo 'There has been a mail error sending to ' . $row['email'] . '<br>';
    echo 'Error: ' . $mail->ErrorInfo . '<br><br>'; 
}


Probeer eens met $mail->ErrorInfo te achterhalen wat er mis gaat!
(http://phpmailer.codeworxtech.com/index.php?pg=properties)

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Gomez12 schreef op maandag 22 september 2008 @ 21:25:
[...]

Even over het hoofd gezien inderdaad. Ik vind het nog steeds niet professioneel ( is het al uit beta ), maar voor een gemiddelde MKB'er waarschijnlijk professioneel genoeg...
Professioneel is nou niet direct iets wat ikzelf associeer met 100% afhankelijk zijn van een gratis partner zonder SLA etc.die je zonder uitleg kan bannen wanneer het hun uitkomt ( noot : laatste nooit zien gebeuren irl. Maar volgens hun voorwaarden kan het, leuk als je daar je businesscase aan ophangt... )

Ik weet alleen dat ik mijn spamfilter hiervoor niet ga aanpassen.
True, verder is de inhoud van je bedrijfsmails ook nog eens van google oid.
Nee niet profi dus.

Mij bij 500 anderen in de CC zetten (ook al raadt iemand je dat ergens anders aan) is ruzie btw ;).

[ Voor 6% gewijzigd door Boudewijn op 22-09-2008 22:08 ]

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

Verwijderd

Spamfiltering: waarschijnlijk staat Google gedurende een bepaalde tijd nadat je ingelogd bent via de webinterface jouw IP adres toe gebruik te maken van hun SMTP server. Als dat weer timeout, dan krijg je relay denied berichten. Maar waarom verstuur je de mail niet gewoon via de SMTP van je provider?

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:31

remco_k

een cassettebandje was genoeg

Verwijderd schreef op maandag 22 september 2008 @ 20:42:
[...]
Wat bedoel je daarmee? heb je het over de website zelf of over de code die ik hier laat zien in tweakers? Dit is een website voor mezelf. Dit is een originele kopie zal ik maar zeggen. De andere wordt al gebruikt met zijn eigen domeinnaam. Mij maakt het niet uit als er wat tweakers die zien. Of is dat onveilig voor een bepaalde reden?
Ik bedoel daarmee dat jij als developer wellicht gewoon niet wilt dan mensen of google of een andere spider onbedoeld op de betreffende site uitkomt die op regel 15 van je php script staat geschreven.
Aangezien je kennelijk aan het developpen bent op die lokatie, kan dat een behoorlijk veiligheidsrisico voor jouw of je webhoster zijn.
Zou kunnen maar lijkt me toch sterk. Veel nieuwsbrieven worden op dergelijke wijze verstuurd, en de enige mailserver die 'ziet' dat die e-mail naar 500 mensen wordt gestuurd, is de eerste de beste SMTP server die het bericht krijgt van de verzender. Daarna worden het 500 losse berichten, zonder dat herleidbaar is naar wie of hoeveel ontvangers de e-mail is gestuurd. Dat is nou het mooie van BCC. Vaak zitten op die SMTP servers al geneens spam filters aangezien die vaak binnen het netwerk zitten van de verzender. Dus echt aannemelijk dat dat de reden is weet ik nog zo net niet.
Boudewijn schreef op maandag 22 september 2008 @ 22:08:
[...]

Mij bij 500 anderen in de CC zetten (ook al raadt iemand je dat ergens anders aan) is ruzie btw ;).
Met mij ook, daarom had ik het ook over BCC.
offtopic:
Wel lache trouwens, 'Allen beantwoorden' Neuqen any1?

[ Voor 42% gewijzigd door remco_k op 22-09-2008 22:39 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Alvast bedankt iedereen voor de hulp.

Voorlopig heb ik de code van 4rn0 toegevoegd, maar ik zal moeten wachten tot gMail weer dienst weigert om te kunnen zien wat de error nu juist is. Zoals ik reeds vermeldde werkt het nu wel omdat ik eerst manueel heb ingelogd in mijn gMail-account. Ik heb geen idee wanneer gMail zich weer afsluit voor mijn mailingscript, maar ik post het meteen hier als ik iets meer weet.

Acties:
  • 0 Henk 'm!

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 08-09 16:22

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, ik heb een eerste errormelding gekregen, nadat ik 4nr0's tip heb toegepast. Hij geeft bij elk mailadres volgende melding:
There has been a mail error sending to blah@blah.com
Error: Language string failed to load: connect_host

Blijkbaar slaat het eerste deel van de error (Error: Language string failed to load) enkel op het feit dat hij niet goed aan de taal-files voor de errors kan. Ik heb mij hier dus werkelijk SUF achter gezocht. Ik dacht dat dit een deel van mijn kernprobleem was. Nu: ik heb die language-error weggekregen door in de file class.phpmailer.php in de functie op een bepaalde plek een absolute path te zetten ipv een relatieve.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
  function SetLanguage($lang_type, $lang_path = '/var/www/vhosts/blah.blah.be/subdomains/blah/httpdocs/phpMailer/language/') {
    if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) {
      include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
    } elseif (file_exists($lang_path.'phpmailer.lang-en.php')) {
      include($lang_path.'phpmailer.lang-en.php');
    } else {
      $this->SetError('Could not load language file');
      return false;
    }
    $this->language = $PHPMAILER_LANG;

    return true;
  }

De documentatie over hoe ik nu die taal moet veranderen vind ik ook nergens. Op met google niet en zelfs niet op hun eigen site. http://phpmailer.codeworxtech.com/index.php Behoorlijk frustrerend allemaal.


Nu is het tweede deel van die error het belangrijkste: "connect host". Als ik dat wist kon ik gewoon naar "connect host" zoeken in de language files. Nu die absolute path gefixt is krijg ik de volgende error: "Error: SMTP Error: Could not connect to SMTP host."

Zover ben ik al. Ik ga nu even deze laatste error googlen. Later meer... :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb ergens een manier gevonden om de error specifieker aan te duiden door hetvolgende toe te voegen aan de code:
$mail->SMTPDebug = 2;

Dit geeft volgende foutmelding:

Error: SMTP Error: Could not connect to SMTP host.
SMTP -> FROM SERVER: 220 mx.google.com ESMTP h1sm2674491nfh.19 SMTP -> FROM SERVER: 250-mx.google.com at your service, [ mijn ip-adres ] 250-SIZE 35651584 250-8BITMIME 250-AUTH LOGIN PLAIN 250 ENHANCEDSTATUSCODES SMTP -> ERROR: Password not accepted from server: 535-5.7.1 Username and Password not accepted. Learn more at 535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 h1sm2674491nfh.19 SMTP -> FROM SERVER: 250 2.1.5 Flushed h1sm2674491nfh.19 There has been a mail error sending to blah@blah.com


De melding refereert naar volgende pagina, maar daar geraak ik ook niet wijzer uit.
http://mail.google.com/support/bin/answer.py?answer=14257

Het gaat dus om het feit dat google mijn login en paswoord niet accepteerd als ze vanuit een website gegeven worden. (met phpMailer althans) Als ik manueel inlog in google, kan ik daarna wel via mijn website mails versturen. Maar al die dingen wist ik eigenlijk vorige maand al.

Acties:
  • 0 Henk 'm!

Verwijderd

gmail maakt dus gebruikt van pop before smtp.
dus eerst je mail controleren en dan pas verzenden of een andere smtp server pakken
Pagina: 1