Detecteer SMTP ondersteuning

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Wieringa

Martijn Wieringa

04/12/2008 11:51:00
Quote Anchor link
Beste lezers,

Als ik op mijn locale server de mail() functie aanroep krijg ik een foutmelding omdat mijn server geen SMTP ondersteund.

Is er een manier om te detecteren of de huidige server SMTP ondersteund?

(Ik vind @mail() niet bepaald acceptabel..)
 
PHP hulp

PHP hulp

21/01/2025 11:18:05
 
- SanThe -

- SanThe -

04/12/2008 11:54:00
Quote Anchor link
Als het wel werkt krijg je geen foutmelding. ;-)
 
Dennis Mertens

Dennis Mertens

04/12/2008 11:56:00
Quote Anchor link
Wat natuurlijk vaak wel werkt"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if(!mail())
{

//Niet
}
[
/code]
 
Jurgen assaasas

Jurgen assaasas

04/12/2008 12:08:00
Quote Anchor link
een simpele mogelijkheid is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
telnet host.com 25


Als je response krijgt dan draait je server, krijg je geen response (dus een timeout) dan draait de SMTP server niet.
 
Martijn Wieringa

Martijn Wieringa

04/12/2008 12:22:00
Quote Anchor link
Ik wil het in het script detecteren.

Ik ga er zowiezo van uit dat het uitvoeren van commando's in de shell niet zal werken i.v.m. safe_mode e.d.
 
Jurgen assaasas

Jurgen assaasas

04/12/2008 12:24:00
Quote Anchor link
Nee, dat gaat idd niet werken, maar dan zijn er alternatieven zoals hier boven. Mail() controleert geloof ik alleen maar of er een mailserver is gedefinieerd in PHP en pas een foutmelding geeft wanneer jij je mail verstuurt. Maar mijn commando kijkt ook daadwerkelijk of er een mailserver draait.
 
Martijn Wieringa

Martijn Wieringa

04/12/2008 12:45:00
Quote Anchor link
Ik heb ff lopen zoeken naar verschillen in de PHP.ini tussen m'n TEST server en LIVE server. De waarden van sendmail_from en sendmail_path blijken leeg op mijn test server, maar op de live server gevuld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

    if(ini_get('sendmail_from') && ini_get('sendmail_path'))
    {

        echo 'Mail server available';
    }

    else
    {
        echo 'No mail server available';
    }


?>


Ik weet alleen niet of het testen op deze waarden écht een betrouwbare manier is om te bepalen of een goede mailserver geconfigureerd is.
 
Yorick17

yorick17

04/12/2008 12:47:00
Quote Anchor link
Of raadpleeg even je phpinfo()
 
- SanThe -

- SanThe -

04/12/2008 12:48:00
Quote Anchor link
Totaal niet betrouwbaar.
 
Martijn Wieringa

Martijn Wieringa

04/12/2008 13:03:00
Quote Anchor link
@Yorick
Hoe kan ik het script de phpinfo() laten raadplegen om dit realtime te checken?

@SanThe
Was ik al bang voor :S
 
Jurgen assaasas

Jurgen assaasas

04/12/2008 13:25:00
Quote Anchor link
Je kan kijken of je een andere mailhost kan gebruiken of gebruik maken van bijv swiftmailer.
 
--

--

04/12/2008 13:31:00
Quote Anchor link
Waarschijnlijk heeft SwiftMailer hier wel een of andere functie voor.
 
Winston Smith

Winston Smith

04/12/2008 14:01:00
Quote Anchor link
De waarden die jij ophaalt via ini_get() zijn exact hetzelfde als in phpinfo(). In phpinfo() krijg je echter een overzicht van alle waarden, en met ini_get() alleen die waarden die jij wilt hebben. phpinfo() heb je dus niet nodig.

Zoals al gezegd werd, zijn 'sendmail_from' en 'sendmail_path' onbetrouwbaar (je kan daar alles invullen wat je wilt), maar wel een goede indicatie. Alternatief kan je inderdaad kijken of je op port 25 respons krijgt (wat Jurgen doet), maar ook dat biedt nog geen volledige garantie dat je kan mailen.

Wil je het echt zeker weten, dan zou ik een mailtje sturen met mail() naar een eigen emailadres, en die met behulp van imap-functies uitlezen. Alleen dan weet je ook of het mailtje ontvangen is.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.