Ga naar inhoud
  • 0

Emailen met PHP


hbrendel

Vraag

Ik heb van een bestaande FM toepassing een webversie gemaakt in php.

 

Soms moet er een mail worden verstuurd. Ik gebruik hiervoor de (php) functie mail().

 

Hoewel deze functie "1" retourneert, komt de e-mail niet aan.

 

Ik heb vervolgens zitten zoeken en ik heb het idee dat de smtp server niet goed staat ingesteld in php.ini.

 

Ik maak gebruik van de mailserver van mijn provider, in dit geval smtp.xs4all.nl. In phpinfo staat bij SMTP: localhost

 

Wat moet daar staan, en hoe doe ik dat? Wat kan er nog meer fout zijn?

 

BVD

 

Henk

Link naar reactie

17 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Hoi Henk,

 

Verander in je php.ini bestand, gewoon die regel in SMTP = smtp.xs4all.nl

 

Als alternatief kan je voor het versturen van je mail, in je PHP code ini_set('SMTP', 'smtp.xs4all.nl') invoeren.

 

Je krijgt een 1 omdat de communicatie met de lokale SMTP server wel in orde is, maar als die de mail "verder" wil versturen naar bestemming (technisch: gerelayed) dan wordt die vrijwel zeker tegengehouden door de firewall van je ISP. PHP is zich daar niet van bewust.

 

Ik veronderstel dat je PHP op een Windows server draait? De PHP mail() functie werkt op Windows nl. anders dan in Unix/Linux distributies.

 

- Jeroen

aangepast door Gast
Link naar reactie
  • 0

Hoi Henk, jij antwoord sneller dan ik kan typen 8)

 

Onder Mac/Unix/Linux werkt de mail() functie met de lokale sendmail toepasing. Je server zal mail versturen, maar die wordt heel waarschijnlijk geblokkeerd door je ISP.

 

Als alternatief kan je de PEAR mail klasse gebruiken (http://pear.php.net/package/Mail), die via een opgegeven SMTP server mail verstuurt, of een van de vele andere (gratis) bestaande klassen zoals XPert Mailer (http://www.xpertmailer.com/) ...

 

- Jeroen

Link naar reactie
  • 0

Henk,

 

Je kan PEAR packages handmatig installeren door ze te downloaden via pear.php.net. Probleem is dat veel packages afhankelijk zijn van andere. Mail is bv. afhankelijk van Net_SMTP (SMTP commands) en Net_SMTP is op haar beurt weer afhankelijk van het package Net_Socket (TCP/IP communicatie).

 

Het makkelijkst is de pear packet manager te gebruiken. Dit wordt t.e.m. Mac OS 10.4 normaal meegeinstalleerd met elke PHP installatie.

 

Om het PEAR Mail package te installeren met de manager, ga als volgt te werk:

- open de terminal

- typ: sudo pear install -a Mail

 

Dit installeert Mail en alle packages waarvan Mail afhankelijk is. Je krijgt hierover feedback in de terminal: de manager download de packages en installeert ze in de PHP include folder.

 

Om na te gaan welke PEAR packages je geïnstalleerd hebt:

- open de terminal

- typ: pear list

Link naar reactie
  • 0

Het is inmiddels een half jaar later. Ik ben er toen niet aan toe gekomen, en heb onlangs de draad weer opgepakt.

 

Ik heb Jeroen's advies opgevolgd en de getracht het mailpakket te instelleren via de terminal.

 

Ik krijg nu de volgende melding:

 

sudo: pear: command not found

 

Hoe kan dat nou?

??????

Link naar reactie
  • 0

Beide artikels zijn een beetje slordig over de installatie, en als je dat blind volgt kom je nergens.

Ik had pear ook nog niet geinstalleerd, dus was ik er ook maar eens aan begonnen. Deze prompt kreeg ik tijdens de install:

 

Below is a suggested file layout for your new PEAR installation. To

change individual locations, type the number in front of the

directory. Type 'all' to change all of them or simply press Enter to

accept these locations.

 

1. Installation prefix ($prefix) : /Users/peter/Desktop

2. Temporary files directory : $prefix/temp

3. Binaries directory : $prefix/bin

4. PHP code directory ($php_dir) : $prefix/PEAR

5. Documentation base directory : $php_dir/docs

6. Data base directory : $php_dir/data

7. Tests base directory : $php_dir/tests

 

1-7, 'all' or Enter to continue:

 

Het is NIET de bedoeling dat je hier gewoon Enter doet.

Stop de installatie met control-c en doe het volgende

 

sudo php go-pear.php 

of

sudo !!

de "!!" is een truukje om je laatste commando te herhalen…:-)

 

Verander de directories zodat alles er zo uit ziet:

 

Below is a suggested file layout for your new PEAR installation. To

change individual locations, type the number in front of the

directory. Type 'all' to change all of them or simply press Enter to

accept these locations.

 

1. Installation prefix ($prefix) : /usr/local

2. Temporary files directory : $prefix/temp

3. Binaries directory : $prefix/bin

4. PHP code directory ($php_dir) : /usr/share/pear

5. Documentation base directory : $php_dir/docs

6. Data base directory : $php_dir/data

7. Tests base directory : $php_dir/tests

 

1-7, 'all' or Enter to continue:

We veranderen onze prefix dus naar /usr/local en de PHP code directory naar /usr/share/pear. Merk op dat er dus een flater staat in beide artikels: uppercase PEAR <> lowercase pear op een Mac.

 

Het is ook niet nodig om de php.ini manueel aan te passen, het installertje doet dat netjes voor je. Hier is het verdere verloop van mijn installatie:

The following PEAR packages are bundled with PHP: PEAR_Frontend_Web-beta,

PEAR_Frontend_Gtk2, MDB2.

Would you like to install these as well? [Y/n] :

 

Loading zlib: ok

 

Bootstrapping Installer...................

Bootstrapping PEAR.php............(remote) ok

Bootstrapping Archive/Tar.php............(remote) ok

Bootstrapping Console/Getopt.php............(remote) ok

 

Extracting installer..................

Downloading package: PEAR.............ok

Downloading package: Structures_Graph....ok

 

Preparing installer..................

Updating channel "pear.php.net"

Update of Channel "pear.php.net" succeeded

Updating channel "pecl.php.net"

Update of Channel "pecl.php.net" succeeded

 

Installing selected packages..................

Downloading and installing package: PEAR.............warning: pear/PEAR requires package "pear/Archive_Tar" (recommended version 1.3.2)

warning: pear/PEAR requires package "pear/Structures_Graph" (recommended version 1.0.2)

warning: pear/PEAR requires package "pear/Console_Getopt" (recommended version 1.2.3)

pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)

downloading PEAR-1.7.2.tgz ...

Starting to download PEAR-1.7.2.tgz (302,744 bytes)

..........................done: 302,744 bytes

install ok: channel://pear.php.net/PEAR-1.7.2

PEAR: Optional feature webinstaller available (PEAR's web-based installer)

PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)

PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)

PEAR: To install optional features use "pear install pear/PEAR#featurename"

Installing bootstrap package: Structures_Graph.......install ok: channel://pear.php.net/Structures_Graph-1.0.2

Downloading and installing package: Archive_Tar-stable.......downloading Archive_Tar-1.3.2.tgz ...

Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)

...done: 17,150 bytes

install ok: channel://pear.php.net/Archive_Tar-1.3.2

Downloading and installing package: Console_Getopt-stable.......downloading Console_Getopt-1.2.3.tgz ...

Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)

...done: 4,011 bytes

install ok: channel://pear.php.net/Console_Getopt-1.2.3

Downloading and installing package: PEAR_Frontend_Web-beta.......downloading PEAR_Frontend_Web-0.7.2.tgz ...

Starting to download PEAR_Frontend_Web-0.7.2.tgz (52,876 bytes)

...done: 52,876 bytes

downloading HTML_Template_IT-1.2.1.tgz ...

Starting to download HTML_Template_IT-1.2.1.tgz (21,565 bytes)

...done: 21,565 bytes

install ok: channel://pear.php.net/HTML_Template_IT-1.2.1

install ok: channel://pear.php.net/PEAR_Frontend_Web-0.7.2

Downloading and installing package: PEAR_Frontend_Gtk2.......Did not download optional dependencies: pear/XML_Parser, pear/XML_Util, use --alldeps to download automatically

Did not download dependencies: pear/System_Command, use --alldeps or --onlyreqdeps to download automatically

pear/PEAR_Frontend_Gtk2 requires PHP extension "php-gtk" (version >= 2.0.0dev)

pear/Config can optionally use package "pear/XML_Parser"

pear/Config can optionally use package "pear/XML_Util"

pear/Gtk2_EntryDialog requires PHP extension "php-gtk" (version >= 2.0.0dev)

pear/Gtk2_FileDrop requires PHP extension "php-gtk" (version >= 2.0.0dev)

pear/MIME_Type can optionally use package "pear/System_Command"

downloading Config-1.10.11.tgz ...

Starting to download Config-1.10.11.tgz (27,718 bytes)

...done: 27,718 bytes

downloading MIME_Type-1.0.0.tgz ...

Starting to download MIME_Type-1.0.0.tgz (4,404 bytes)

...done: 4,404 bytes

install ok: channel://pear.php.net/Config-1.10.11

install ok: channel://pear.php.net/MIME_Type-1.0.0

Downloading and installing package: MDB2.............downloading MDB2-2.4.1.tgz ...

Starting to download MDB2-2.4.1.tgz (119,790 bytes)

...done: 119,790 bytes

install ok: channel://pear.php.net/MDB2-2.4.1

MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)

MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)

MDB2: Optional feature mysql available (MySQL driver for MDB2)

MDB2: Optional feature mysqli available (MySQLi driver for MDB2)

MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)

MDB2: Optional feature oci8 available (Oracle driver for MDB2)

MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)

MDB2: Optional feature querysim available (Querysim driver for MDB2)

MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)

MDB2: To install optional features use "pear install pear/MDB2#featurename"

 

******************************************************************************

WARNING! The include_path defined in the currently used php.ini does not

contain the PEAR PHP directory you just specified:

/share/pear>

If the specified directory is also not in the include_path used by

your scripts, you will have problems getting any PEAR packages working.

 

 

Would you like to alter php.ini /etc/php.ini>? [Y/n] : Y

 

php.ini /etc/php.ini> include_path updated.

 

Current include path : .:

Configured directory : /usr/share/pear

Currently used php.ini (guess) : /private/etc/php.ini

Press Enter to continue:

 

The 'pear' command is now at your service at /usr/local/bin/pear

mbpro:Desktop peter$ php go-pear.php

Welcome to go-pear!

 

Onderaan mijn php.ini had hij dus netjes bijgevoegd:

;***** Added by go-pear
include_path=".:/usr/share/pear"
;*****

 

 

Vervolgens kan je Jeroen verder volgen:

mbpro:Desktop peter$ sudo pear install -a Mail

Password:

downloading Mail-1.1.14.tgz ...

Starting to download Mail-1.1.14.tgz (17,537 bytes)

......done: 17,537 bytes

downloading Net_SMTP-1.3.0.tgz ...

Starting to download Net_SMTP-1.3.0.tgz (10,259 bytes)

...done: 10,259 bytes

downloading Net_Socket-1.0.8.tgz ...

Starting to download Net_Socket-1.0.8.tgz (5,441 bytes)

...done: 5,441 bytes

downloading Auth_SASL-1.0.2.tgz ...

Starting to download Auth_SASL-1.0.2.tgz (5,645 bytes)

...done: 5,645 bytes

install ok: channel://pear.php.net/Mail-1.1.14

install ok: channel://pear.php.net/Net_Socket-1.0.8

install ok: channel://pear.php.net/Auth_SASL-1.0.2

install ok: channel://pear.php.net/Net_SMTP-1.3.0

Link naar reactie
  • 0

Inderdaad, het gaat allemaal. Je met na installatie wel de nodige paden veranderen.

 

Je volgt Peters' instructies en je voert - zoals Peter ook aangaf - nadien via pear config-set commando's nadien de juiste paden in van je php.ini en je php installatie dir. Typ best eerst pear config-show in de terminal, om alle configuratieparamters en hun huidige waarde te bekijken.

 

Je kan ook meteen kiezen om pear in dezelde dir te installeren als php. Kijk daarvoor ergens in de /Library/Filemaker Server/Web Publishing/publishing-engine/php/lib/ dir waar je 'php' terugvindt

Link naar reactie
  • 0

Ik heb de installatie uitgevoerd volgens de beschrijving van Peter.

 

De hele PEAR boel staat nu - inclusief het Mail pakket - in de directory /usr/share

 

Ik heb daarna een test gedaan, maar het aanroepen van Mail-functies genereert nog steeds een error. Dat had ik wel verwacht, want ik heb nog geen paden aangepast.

 

Nu snap ik nog niet hoe ik de FileMaker PHP installatie duidelijk maak, dat het daar staat. Ik ben dus wat gaan neuzen, en ik heb gemerkt dat er al een complete PEAR installatie staat in /Library/FileMaker Server/Web Publishing/publishing-engine/php/lib/php

 

Daar staat Mail, enz natuurlijk niet in. Wat nu? Kennelijk heeft FileMaker de PEAR class wel degelijk geïnstalleerd, maar dat wist de Terminal niet.

 

Nu zijn er dus twee. Kan ik de hele PEAR map nu overzetten? Moet ik Apache herstarten?

Ik ben een leek met Unix, help mij alsjeblieft nog een klein beetje.

Link naar reactie
  • 0

Welaan heren Peter en Jeroen, het werkt!!

 

Het enige dat ik heb gedaan na mijn laatste post was het include-path aanpassen in de juiste php.ini. (usr/share/pear toegevoegd)

 

Wat mij nog verontrust is dus nog wel die dubbele aanwezigheid van al die bestanden. Is het niet cleaner om alles bij elkaar te hebben?

Link naar reactie
  • 0
Ik ben dus wat gaan neuzen, en ik heb gemerkt dat er al een complete PEAR installatie staat in /Library/FileMaker Server/Web Publishing/publishing-engine/php/lib/php

Weer wat bijgeleerd! Waarom het moeilijk maken als het ook eenvoudig kan 8)

 

Je kan misschien best de nieuwe pear (ja, dat zwarte bestandje!) en de pear map in usr/share/ verwijderen, om verwarring te vermijden. In het vervolg ga je in je terminal eerst naar de PEAR map via cd /Libaray/pad-naar-PEAR. Daar typ je de nodige commando's en dat zal wel werken!

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...