foutmelding PHPMailer: Message could not be sent.Mailer Error: SMTP connect() failed.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

N tigerrag

N tigerrag

26/09/2016 21:15:54
Quote Anchor link
Beste mensen,

Wellicht is dit al eens voorbij gekomen, maar kon niets vinden wat specifiek met dit probleem te maken heeft:

Ik vertel even in het kort mijn stappen zoals tot nu gevolgd:

-zipfile gedownload op https://github.com/PHPMailer/PHPMailer
-Bestanden uit de zipfile uitgepakt in map phpmailer (op server)
-php bestand aangemaakt als: mailer.php (zie onderstaande code)
-smtp configuratie aangepast in mail.php (gebruik smtp server: smtp.kpnmail.nl (zie voorbeeldcode hieronder)
-Bestand mail.php op server gezet.

Bij het aanroepen via de browser (www.mijnwebsite.nl/mail.php) verschijnt foutmelding:

Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

wat heb ik al geprobeerd:
-gebruik te maken van andere smtp server (gmail)
-verschillende poortnummers gebruikt (464 / 25)
-documentatie nagezien volgens de link uit de foutnmelding: https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Ondanks dit blijft dezelfde foutmelding bestaan. Ik begrijp eruit dat het bestand mail.php geen connectie kan krijgen met de smtp server. echter kan ik niets ontdekken waaraan dit ligt. Wie kan wat advies geven?

mailer.php
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 1;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.kpnmail.nl';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '[email protected]';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('[email protected]', 'Ho');
$mail->addAddress('[email protected]', 'test');     // Add a recipient
$mail->addAddress('[email protected]');               // Name is optional
$mail->addReplyTo('[email protected]', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else {
    echo 'Message has been sent';
}

?>
 
PHP hulp

PHP hulp

29/03/2024 03:08:30
 
- Ariën  -
Beheerder

- Ariën -

26/09/2016 22:11:56
Quote Anchor link
Ik neig naar een firewall te denken, die de uitgaande poorten blokkeert. Gebruik anders eens geen SMTP, dan mail je via de server's sendmail zelf.
Gewijzigd op 26/09/2016 22:13:09 door - Ariën -
 
N tigerrag

N tigerrag

26/09/2016 22:30:07
Quote Anchor link
Is die firewall dan door mijn hoster ingesteld en zijn er manieren die dit kunnen omzeilen?

Hoeft ook niet persee via smtp, maar dacht dat dit wat veiliger is dan sendmail? Wil met php mailer bijlages kunnen meesturen waaronder pdf bestand(en) etc.

Graag zou ik je advies hier nog over willen hebben Arien. Alvast bedankt voor je eerdere reactie
 
Aad B

Aad B

26/09/2016 22:33:44
Quote Anchor link
Kan je op OS niveau proberen of je de mailserver kan bereiken?
Hiermee test je of de smtp server bereikbaar is:
Een voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ telnet smtp.vodafone.nl 25
Trying 212.54.42.9...
Connected to smtp.mail.gtm.iss.as9143.net.

Escape character is '^]'.
554 SMTP synchronization error
Connection closed by foreign host.

$ telnet smtp.vodafone.nl 587
Trying 212.54.42.9...
Connected to smtp.mail.gtm.iss.as9143.net.
Escape character is '^]'.
220-smtp6.tb.mail.iss.as9143.net ESMTP Mon, 26 Sep 2016 22:29:46 +0200
220-Sending spam or unsolicited commercial e-mail to this server is strictly
220-prohibited by our NO UBE / NO UCE policy. Abuse will be prosecuted and/or
220 charged per attempted recipient at international postal rates.
^C
Connection closed by foreign host.
 
N tigerrag

N tigerrag

26/09/2016 22:36:16
Quote Anchor link
Aard B, met deze methode ben ik niet handig...hoe kan met jou voorbeeld code zo'n test doen? Wil het graag eens uitproberen
Gewijzigd op 26/09/2016 22:36:56 door N tigerrag
 
Aad B

Aad B

26/09/2016 22:38:33
Quote Anchor link
N tigerrag op 26/09/2016 22:30:07:
Is die firewall dan door mijn hoster ingesteld en zijn er manieren die dit kunnen omzeilen?

Hoeft ook niet persee via smtp, maar dacht dat dit wat veiliger is dan sendmail? Wil met php mailer bijlages kunnen meesturen waaronder pdf bestand(en) etc.

Graag zou ik je advies hier nog over willen hebben Arien. Alvast bedankt voor je eerdere reactie

Ja, je hoster kan mailpoorten naar buiten geblokkeerd hebben
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
//$mail->isSMTP();                                      // Set mailer to use SMTP
//$mail->Host = 'smtp.kpnmail.nl';  // Specify main and backup SMTP servers
//$mail->SMTPAuth = true;                               // Enable SMTP authentication
//$mail->Username = '[email protected]';                 // SMTP username
//$mail->Password = 'secret';                           // SMTP password
//$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
//$mail->Port = 587;                                    // TCP port to connect to

Verwijder of comment de smtp uit je script en php mailer zal de lokale sendmail gebruiken.
Er is niet echt onderscheid in veiligheid, je hoster zorgt daar wel voor als het goed is
Gewijzigd op 26/09/2016 22:40:03 door Aad B
 
Ben van Velzen

Ben van Velzen

26/09/2016 22:39:06
Quote Anchor link
Hij laat toch letterlijk zien wat hij doet? Dit werkt op Windows, OSX en Linux.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/09/2016 22:46:26
Quote Anchor link
Wat verteld PHPMailer je met deze optie?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$mail
->SMTPDebug  = 2;
?>
 
N tigerrag

N tigerrag

26/09/2016 22:49:39
Quote Anchor link
Ik heb de code inmiddels uitgevoerd zonder smtp gedeelte zoals Aard B zei, en nu krijg ik terug dat de mail verzonden is. Ben dus weer een stap verder...heel fijn.

heeft iemand verder nog wat tips hoe je het beste een bijlage kan meesturen? Er leiden zoveel wegen naar Rome...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/09/2016 22:50:49
Quote Anchor link
N tigerrag op 26/09/2016 22:49:39:
Ik heb de code inmiddels uitgevoerd zonder smtp gedeelte zoals Aard B zei, en nu krijg ik terug dat de mail verzonden is. Ben dus weer een stap verder...heel fijn.


Komt de mail ook aan?
 
N tigerrag

N tigerrag

26/09/2016 22:51:21
Quote Anchor link
Frank Nietbelangrijk op 26/09/2016 22:46:26:
Wat verteld PHPMailer je met deze optie?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$mail
->SMTPDebug  = 2;
?>


dan krijg ik dit:

2016-09-26 20:50:46 Could not access file: /var/tmp/file.tar.gz 2016-09-26 20:50:46 Could not access file: /tmp/image.jpg 2016-09-26 20:50:46 SMTP ERROR: Failed to connect to server: Connection refused (111) 2016-09-26 20:50:46 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
 
Aad B

Aad B

26/09/2016 22:51:39
Quote Anchor link
Met phpmailer kan prima een bijlage verstuurd worden. Je hebt dat toch al in je scripts staan?
Ik vraag me overigens wel af of je bij een hoster /var/tmp en /tmp kan benaderen??

Toevoeging op 26/09/2016 22:55:41:

Aad B op 26/09/2016 22:51:39:
Met phpmailer kan prima een bijlage verstuurd worden. Je hebt dat toch al in je scripts staan?
Ik vraag me overigens wel af of je bij een hoster /var/tmp en /tmp kan benaderen??
1. Je kan inderdaad niet bij de directory /tmp en /var
2. Gebruik gewoon de sendmail van je hoster, laat dat smtp gedoe weg.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/09/2016 22:55:46
Quote Anchor link
>> Connection refused (111)

Volgens mij is er inderdaad een blokkade.
 
N tigerrag

N tigerrag

26/09/2016 23:00:41
Quote Anchor link
die paden moet ik nog wat aanpassen. Heb een form gemaakt met een upload systeem welke ik ophaal uit

$_FILES['bestand']['name'];

en vervolgens moet ik volgens mij het pad naar het te versturen bestand (in dit geval de upload) neerzetten op de regel waar nu staat:

$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments

Zit ik dan goed? of is dit te simpel bedacht? (probeer wat te stoeien met dit soort dingen)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/09/2016 23:06:06
Quote Anchor link
Nee want als je een bestand upload dan krijgt dit bestand een random naam. Deze naam kun je alleen achterhalen door de superglobal $_FILES uit te lezen.

Probeer maar eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>' . print_r($_FILES, true) . '</pre>';
?>


een aardige tut over file uploads: http://www.tizag.com/phpT/fileupload.php
 



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.