Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

problemen met mail() functie

Pagina: 1
Acties:

Onderwerpen


  • Timo002
  • Registratie: September 2003
  • Niet online
Beste,

Taal: php
Versie: 5.3

Al meer dan een jaar lang maak ik tijdens het bestel process op een webshop gebruik van php mail() functie. voordat de mail() functie wordt aangeroepen wordt er diverse informatie uit de database gehaald en wordt de e-mail opgemaakt, op basis van de bestelling.

Uiteindelijk wordt de mail() functie aangeroepen en wordt de e-mail verstuurd. Indien het resultaat hiervan true is, wordt er bij de bestelling ook een regel in de database aangemaakt dat de email verzonden is. Sinds afgelopen maandag wordt deze regel met enige regelmaat niet meer aangemaakt. Daarop ben ik gaan zoeken en merk ik dat de mail() functie nu false terug geeft zonder verdere fouten.

Er is niets gewijzigd in de code dus daar kunnen geen fouten in zitten.

De hosting heeft aangegeven dat ze niets verandert hebben.

Ik heb de opbouw van een e-mail afgevangen en in een lege pagina geplaatst als plain text om het alsnog via de mail() functie te versturen. Om dus uit te sluiten of er fouten in de header zitten. Het versturen van de e-mail van deze losse pagina gaat probleem loos.

Het is vooral niet tastbaar omdat het soms wel, soms niet werkt. Zelf weet ik even niet meer waar ik naar moet kijken.

[ Voor 84% gewijzigd door Timo002 op 08-12-2011 23:05 . Reden: Betere start ]


  • P-Storm
  • Registratie: September 2006
  • Nu online
Ik vermoed dat we meer nodig zullen heb dat alleen mail functie, over welke taal gaat het, heb je al een debug gedraait? Zoals je nu aangeeft is er zeer weinig waarmee we kunnen helpen. Dus je zult het probleem moeten isoleren en dan een geisoleerd stukje code met je probleem laten zien.

  • Timo002
  • Registratie: September 2003
  • Niet online
Stom, helemaal niet opgegeven.. Dom van mij! Sorry.

Het gaat op php!
Debuggen... voor zover ik weet gaat het niet verder als het opvragen van de pagina. De mail functie geeft false terug en dat is alles. Verder geen foutmeldingen of wat dan ook.

Als er wel debug mogelijkheden zijn in php dan hoor ik het graag!

Het vreemde is vooral dat het soms wel en soms niet werkt. Ook werkt soms de meest simpele vorm van de mail() functie niet. Tot afgelopen maandag functioneerde dit probleemloos en ineens werkt het niet meer, zonder aanpassingen.


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
/* Onderwerp e-mail */
$email_subject = $row_email->onderwerp;

/* Afkomstig e-mail adres */
$email_from = $row_email->email_van;

/* headers van de afkomstige e-mail */
$headers = $row_email->headers;

/* Waar moet de e-mail heen */
$email_to = $row_klant->emailadres; // Who the email is too  

/* Verzend de email */   
$email_message = $pBericht; // Message that the email has in it 

$semi_rand = md5(time());    
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";   
     
$headers .= "\nMIME-Version: 1.0\n" .   
            "Content-Type: multipart/mixed;\n" .   
            " boundary=\"{$mime_boundary}\"";   

$email_message = "This is a multi-part message in MIME format.\n\n" .   
                "--{$mime_boundary}\n" .   
                "Content-Type:text/html; charset=\"iso-8859-1\"\n" .   
               "Content-Transfer-Encoding: 7bit\n\n" . $email_message . "\n\n";   

$ok = mail($email_to, $email_subject, $email_message, $headers);

[ Voor 69% gewijzigd door Timo002 op 08-12-2011 22:42 ]


  • Patriot
  • Registratie: December 2004
  • Laatst online: 24-11 17:53

Patriot

Fulltime #whatpulsert

Geef even de aanroep van de mail-functie, en de opbouw van de variabelen die je als parameter meegeeft. Zodat wij kunnen zien welke headers je stuurt e.d.

Verder kun je met het Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/icon_hand.gif-icoontje linksboven een titelfix aanvragen, zodat er even [php] voor de titel gezet wordt.

[ Voor 9% gewijzigd door Patriot op 08-12-2011 22:41 ]


  • me1299
  • Registratie: Maart 2000
  • Laatst online: 21:27

me1299

$ondertitel

http://php.net/manual/en/function.error-reporting.php

Wellicht wordt er wel een error getriggerd maar wordt deze 'gesuppressed'

[ Voor 5% gewijzigd door me1299 op 08-12-2011 22:42 ]

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • Timo002
  • Registratie: September 2003
  • Niet online
DeathKnight24 schreef op donderdag 08 december 2011 @ 22:41:
http://php.net/manual/en/function.error-reporting.php

Wellicht wordt er wel een error getriggerd maar wordt deze 'gesuppressed'
We hebben het hier over een setting in de php.ini file toch?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Patriot schreef op donderdag 08 december 2011 @ 22:41:
Verder kun je met het [afbeelding]-icoontje linksboven een titelfix aanvragen, zodat er even [php] voor de titel gezet wordt.
Dat kan ook prima met Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/tag_edit.png tags ;)
Timo002 schreef op donderdag 08 december 2011 @ 22:44:
[...]

We hebben het hier over een setting in de php.ini file toch?
Doe eens gek en léés die pagina eens...

Verder wil ik je vriendelijk verzoeken onze Quickstart een keer door te nemen én te hanteren bij 't openen van een topic. Je topicstart is veel te karig namelijk. Dat is, mede dankzij P-Storm, aardig opgelost omdat 'ie nog wat zaken uit je trekt maar die had je natuurlijk ook prima in je topicstart kunnen opnemen.

[ Voor 47% gewijzigd door RobIII op 08-12-2011 22:51 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Patriot
  • Registratie: December 2004
  • Laatst online: 24-11 17:53

Patriot

Fulltime #whatpulsert

Hmmk, ik vind het zelf niet echt een relaxte oplossing, maar dat komt vooral omdat ik tags uit heb staan met custom css :+

  • Timo002
  • Registratie: September 2003
  • Niet online
RobIII schreef op donderdag 08 december 2011 @ 22:45:
Verder wil ik je vriendelijk verzoeken onze Quickstart een keer door te nemen én te hanteren bij 't openen van een topic. Je topicstart is veel te karig namelijk. Dat is, mede dankzij P-Storm, aardig opgelost omdat 'ie nog wat zaken uit je trekt maar die had je natuurlijk ook prima in je topicstart kunnen opnemen.
Gedaan, excuses. De frustraties stonden staan in de weg!

Error reporting staat overigens op E_ALL | E_STRICT

[ Voor 4% gewijzigd door Timo002 op 08-12-2011 23:25 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dan zie je niet alles, tijdens het developen moet erroer_reporting gewoon altijd op -1 (beter dan E_ALL ;) ) hebben staan. Uitzondering maken == aub ander beroep/hobby zoeken. :P

edit:
Patriot: klopt, maar -1 is dus altijd goed. :Y)

[ Voor 14% gewijzigd door Voutloos op 08-12-2011 23:54 ]

{signature}


  • Patriot
  • Registratie: December 2004
  • Laatst online: 24-11 17:53

Patriot

Fulltime #whatpulsert

Voutloos schreef op donderdag 08 december 2011 @ 23:30:
Dan zie je niet alles, tijdens het developen moet erroer_reporting gewoon altijd op -1 (beter dan E_ALL ;) ) hebben staan. Uitzondering maken == aub ander beroep/hobby zoeken. :P
Hangt af van je versie.
Passing in the value -1 will show every possible error, even when new levels and constants are added in future PHP versions. The E_ALL constant also behaves this way as of PHP 5.4.

  • Timo002
  • Registratie: September 2003
  • Niet online
PHP:
1
2
error_reporting(-1);
ini_set('display_errors','On');

Deze twee opgenomen in de code. Krijg nu wel notices te zien, maar geen fouten.

  • Patriot
  • Registratie: December 2004
  • Laatst online: 24-11 17:53

Patriot

Fulltime #whatpulsert

Wat zijn die notices?

  • Timo002
  • Registratie: September 2003
  • Niet online
2x Undefined index:

  • Joostje123
  • Registratie: September 2010
  • Laatst online: 21:41
Iets met je host te maken die je mail blokkeert omdat je het te veel achter elkaar gebruikt en het als SPAM wordt gezien?

Dat zal het verklaren dat het soms wel werkt.

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 24-11 08:37
Wat dacht je er van om ze hier te plaatsen?

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 21:27

me1299

$ondertitel

Kijk eens in de php.ini welke smtp server gebruikt wordt, en probeer eens vanaf de host waarop de website draait met telnet een mailtje te sturen via dezelfde server.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je kan hier lang of kort over praten, maar negen van de tien problemen met mail() los je vanzelf op door PHPMailer te gebruiken. Dan hoef je ineens niet meer na te denken over header injection en dergelijke beveiligingslekken en bovendien zorgt het ervoor dat je headers met een paar regels code goed staan.
Timo002 schreef op donderdag 08 december 2011 @ 23:43:
Krijg nu wel notices te zien, maar geen fouten.
Notices zijn ook fouten. Het zijn altijd slordigheidjes die uitnodigen tot het maken van fouten en een notice zou je dus net zo secuur weg moeten werken als een harde foutmelding.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Timo002
  • Registratie: September 2003
  • Niet online
Manuel schreef op vrijdag 09 december 2011 @ 00:22:
[...]

Wat dacht je er van om ze hier te plaatsen?
Heb de exacte melding nu niet bij de hand. Maar hij geeft een notice over een variabele die niet gedeclareerd is.

Undefined index: variabele in path/to/file on line 33.

Het leek me daarom niet zo relevant om het te vermelden. Maar daar kunnen jullie natuurlijk niets mee, tenzij jullie mijn gedachten kunnen lezen...

@NMe
PHPMailer, is dat aan te raden boven PEAR::Mail_Mime

[ Voor 10% gewijzigd door Timo002 op 09-12-2011 08:11 ]


  • me1299
  • Registratie: Maart 2000
  • Laatst online: 21:27

me1299

$ondertitel

Persoonlijk vind ik alles aan te raden boven PEAR classes :)

Met PHPMailer kan je ook gewoon een smtp server opgeven.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • las3r
  • Registratie: Augustus 2006
  • Laatst online: 22-11 13:04
Je kunt natuurlijk ook gewoon een gmail-box aanmaken, en dan met de IMAP klasse mails gaan versturen, dit werkt altijd (Imap is eigenlijk altijd als standaard php module geinstalleerd).

Als je geinteresseerd bent kan ik m'n klasse wel naar je opsturen die dit afhandelt :-)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
las3r schreef op vrijdag 09 december 2011 @ 10:17:
Als je geinteresseerd bent kan ik m'n klasse wel naar je opsturen die dit afhandelt :-)
Leuk (en goed bedoeld), maar beter zet je je code op pastebin oid (en dan een linkje in dit topic) zodat anderen die dit topic lezen en interesse hebben in je class ook meeprofiteren ;) Dit valt onder "mail me"; als iedereen op 't forum zo zou reageren was 't forum 1 grote lege bak niets; het hele nut van 't forum zou verloren gaan. Nu delen we alle kritiek, opmerkingen, wijze raad etc. in topics waardoor iedereen een graantje mee pikt die op een dergelijk topic stuit met een zoekopdracht oid.

Je zou ook kunnen overwegen te posten in [Alg] Welke tools heb jij gemaakt? - deel IV

[ Voor 5% gewijzigd door RobIII op 09-12-2011 10:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • las3r
  • Registratie: Augustus 2006
  • Laatst online: 22-11 13:04
@Rob
Je hebt ook gelijk :-)

Ik kom er net achter dat ik gebruik maak van PHPmailer in combinatie met de PHP IMAP functie, dus wellicht minder zelf gemaakt en meer zelf geconfigureerd, but here goes nothing:

http://pastebin.com/cna7Xg01

Hier staat een stukje sample code die alle emails uit je Gmail inbox kan uitlezen.

Voor meer informatie zie:
PhpMailer: http://phpmailer.worxware.com/
PHP IMAP manual: http://php.net/manual/en/book.imap.php

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

DeathKnight24 schreef op vrijdag 09 december 2011 @ 09:30:
Persoonlijk vind ik alles aan te raden boven PEAR classes :)
Dat dus. PHPMailer heeft geen dependencies, voor dat andere geval moet je (uiteraard) PEAR hebben, en dat is lang niet op elke host beschikbaar.

Sowieso is de reden om PHPMailer te gebruiken juist om je alles met betrekking tot versturen van mail uit handen te nemen. Het is me een beetje een raadsel waarom je dat zou combineren met IMAP-functies.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Timo002
  • Registratie: September 2003
  • Niet online
Besten, allen bedankt voor de hulp!

Mijn probleem is inmiddels verholpen en mijn gedachten zijn bevestigd! De hosting provider heeft "iets" gewijzigd op de server. Vraag me niet precies wat, heb zelf geen contact gehad met de hosting provider. Maar deze wijziging was in ieder geval de boosdoener voor het niet meer goed functioneren van de mail() functie!

Desondanks is het denk ik de moeite waard om eens naar andere mail functies te kijken als phpmailer of PEARLS (wordt door de provider ondersteund).

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dan nog zou ik niet kijken naar PEAR. Wat als je ooit van host moet veranderen om wat voor reden dan ook? PEAR staat niet overal aan.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Cartman!
  • Registratie: April 2000
  • Niet online
PEAR is, net als Zend Framework, gewoon een setje PHP-files dus als je host geen PEAR heeft kun je de boel evt. los downloaden en in een include mapje prakken icm. een autoloader. Overigens sluit ik me er wel bij aan dat je t niet moet willen, PEAR is best wel verouderd.
Pagina: 1