Probleem met PHPmailer werkend te krijgen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Piet Marisael

Piet Marisael

19/08/2010 18:54:15
Quote Anchor link
Ik probeer PHPmailer aan de praat te krijgen, maar het wil net lukken.

Op de server heb ik de volgende bestanden gezet in dezelfde dir. :
1. class.phpmailer.php
2. class.smtp.php
3. nieuwsbriefmail.html
4. test.php

Test.php bestaat uit de volgende code:
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
<?php  
$body
= "nieuwsbriefmail.html";
require("class.phpmailer.php");  
$mail = new PHPMailer();  
$mail->IsSMTP();  // telling the class to use SMTP  
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "tls"; //sets the prefix to the server
$mail->Host     = "smtp.gmail.com"; // SMTP server  
$mail->Port = 587; //set the SMTP port for the GMAIL server
$mail->Username   = "*******@gmail.com";     // SMTP server username
$mail->Password   = "*******";            // SMTP server password
$mail->IsSendmail();  // tell the class to use Sendmail
$mail->AddReplyTo("****@gmail.com","mijn naam");
$mail->From       = "*****@gmail.com";
$mail->FromName   = "www.*******.nl";
$to = "******@home.nl";
$mail->AddAddress($to);
$mail->Subject  = "First PHPMailer Message";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test    
$mail->WordWrap   = 80; // set word wrap
$mail->MsgHTML($body);

    
$mail->IsHTML(true); // send as HTML
$mail->Send();

if(!$mail->Send()) {  
echo 'Message was not sent.';  
echo 'Mailer error: ' . $mail->ErrorInfo;  
}
else {  
echo 'Message has been sent.';  
}
  
?>


alles is op de plaats van **** correct ingevuld.
echter krijg ik al meteen een foutmelding op /usr/sbin/sendmail

Kent hij blijkbaar niet???
Ben ook bezig geweest om class.phpmailer.php te vervangen door class.smtp.php

Daar krijg ik een http-fout 500.

Wat doe ik nou eigenlijk fout?
Moet ik in die 2 class-bestanden ook nog iets invullen of veranderen?

Wie kan mij verder helpen?
Zoekende op internet kom ik niet verder.
Zou dit graag werkende krijgen want ik ben al eeen keer afgesloten geweest omdat ik een keer WorldCast heb geprobeerd en daar ging het helemaal mis mee.
Die leek niet te werken maar ondertussen verstuurde ik wel 1000 mails zonder er erg in te hebben.
 
PHP hulp

PHP hulp

08/11/2024 23:15:59
 
Martijn B

Martijn B

19/08/2010 19:21:06
Quote Anchor link
Quote:
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->Port = 587; //set the SMTP port for the GMAIL server
$mail->Username = "*******@gmail.com"; // SMTP server username
$mail->Password = "*******"; // SMTP server password


Hier gaat het fout, denk ik. Het beste is om de SMTP server van je provider in te vullen. Zit je bijvoorbeeld bij Ziggo dan vul je in:
Quote:
$mail->Host = "smtp.ziggo.nl"; // SMTP server


De andere instellingen hoef je niet te gebruiken.

Quote:
Ben ook bezig geweest om class.phpmailer.php te vervangen door class.smtp.php


Dat hoef je niet te doen.

Edit:
Gewijzigd op 19/08/2010 19:24:38 door Martijn B
 

19/08/2010 19:27:06
Quote Anchor link
Martijn B op 19/08/2010 19:21:06:
Quote:
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->Port = 587; //set the SMTP port for the GMAIL server
$mail->Username = "*******@gmail.com"; // SMTP server username
$mail->Password = "*******"; // SMTP server password


Hier gaat het fout, denk ik. Het beste is om de SMTP server van je provider in te vullen. Zit je bijvoorbeeld bij Ziggo dan vul je in:
Quote:
$mail->Host = "smtp.ziggo.nl"; // SMTP server


De andere instellingen hoef je niet te gebruiken.

Jawel. Gmail heeft aangepast smtp instellingen.
 
Martijn B

Martijn B

19/08/2010 19:28:15
Quote Anchor link
Ja weet ik nu ook zie edit, maar dat is van 2006...


Gewijzigd op 19/08/2010 19:30:26 door Martijn B
 

19/08/2010 19:33:59
Quote Anchor link
Martijn B op 19/08/2010 19:28:15:
Ja weet ik nu ook zie edit, maar dat is van 2006...



Gmail heeft altijd aparte smtp instellingen gehad. Dat maakt voor phpmailer niks uit. Die moet gewoon smtp ondersteunen.
Ik denk dat openssl niet aanstaat.
 
Piet Marisael

Piet Marisael

19/08/2010 19:37:16
Quote Anchor link
Ik ga er straks even naar kijken, als het maar niet vertaald is door http://stam.blogs.com/8bits/2008/08/phpmailer-via-gmail.html
Daar kwam ik ook niet verder mee.
Heb trouwens de laatste versie van PHPmailer opgehaald.

Alvast bedankt voor de tip.
 

19/08/2010 19:45:41
Quote Anchor link
Piet, doe in een bestand phpinfo() en kijk of je ssl ondersteuning hebt.
 
Piet Marisael

Piet Marisael

19/08/2010 19:54:19
Quote Anchor link
Ik weet dat ik via Ziggo smtp kan verzenden met mijn Gmail-accounts.
Ik moet trouwens de SMTP van ziggo gebruiken als ik emails verstuur met Gmail.
Behalve via gmail.com dan.

Ik ga een gedeelte uit die 2006 uitleg gebruiken, daar staat net iets meer in dan bij stam.blogs die alleen maar de localhost test doet.
Moet nu alleen wel voorzichtig aan de gang gaan.
Met die afsluiting van afgelopen maandag moet ik me nu wel een maand rustig houden anders riskeer ik een afsluiting van een hele week.
En dat moet ik net niet hebben.

Nogmaals bedankt voor de tips, hoop er nu uit te komen.
Lukt het niet, dan roep ik nog wel een keertje.

Oja, vanwaar kreeg ik die /usr/sbin/sendmail melding???
Heeft dat iets te maken met vevida.nl alwaar de site is geplaatst?
 
Aad B

Aad B

19/08/2010 20:22:36
Quote Anchor link
Instellingen van TS op google zijn fout, moet zijn (en dit werkte vandaag nog):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$mail
->IsSMTP();                                               // set mailer to use SMTP
$mail->Host     = "ssl://smtp.gmail.com";                      // specify main and backup server
$mail->SMTPAuth = true;                                        // turn on SMTP authentication
$mail->Username = "******@gmail.com";                   // SMTP Username
$mail->Password = "******";                                 // SMTP Password
$mail->Port = 465;
$mail->From = "******@gmail.com";
$mail->FromName = "Website";
$mail->AddReplyTo("******@gmail.com", "*****");
?>
Gewijzigd op 19/08/2010 20:23:06 door Aad B
 
Piet Marisael

Piet Marisael

19/08/2010 21:23:37
Quote Anchor link
hmm, niet echt joviaal van http://phpmailer.worxware.com/index.php?pg=tip_gmail
je verwacht van zo'n site wel de juiste informatie te krijgen.
 
Aad B

Aad B

19/08/2010 22:00:53
Quote Anchor link
Het is niet verkeerd wat worxware adviseert. Het kan ook maar mogelijk staat er nog iets fout. Check ook google: http://mail.google.com/support/bin/answer.py?hl=en&answer=13287
 
Piet Marisael

Piet Marisael

21/08/2010 06:44:55
Quote Anchor link
met de bovenstaande gegevens ingevuld krijg ik de melding terug:

SMTP Error: Could not connect to SMTP host. Mailer Error: SMTP Error: Could not connect to SMTP host.

Krijg dus geen contact met de SMTP.
Vraag me nu nog af of ik iets in class.phpmailer.php en/of class.smtp.php moet aanpassen?
In class.smtp.php staat:

public $SMTP_PORT = 25; // werkt neiet bij mij

heb dit verandert in:

public $SMTP_PORT = 465; // ook geen resultaat te zien.

Waar zit nu die fout, blijkbaar gaat hij dan toch bij Gmail connecten!

Of zou het moeten zijn dat ik de smtp van mijn eigen provider moet gebruiken?
 
Jeroeb van Rossum

Jeroeb van Rossum

21/08/2010 11:15:45
Quote Anchor link
probeer eens op de commandline te telnetten naar de poorten die je wilt gebruiken..
Smtp werkt standaard op poort 25, en als standaard alternatief voor providers die poort 25 blokkeren kan je vaak over 587 connecten.

typ dit eens op de commandline:
telnet smtp.gmail.com 25
of
telnet smtp.gmail.com 587
dan weet je in ieder geval of je een verbinding kan maken met de server daar.
 
P Lekensteyn

P Lekensteyn

21/08/2010 11:26:47
Quote Anchor link
KPN (ik dacht ook Ziggo), en enkele andere providers blokkeren poort 25 standaard.
Daar kwam ik ook na twee dagen prutsen achter.
 
Piet Marisael

Piet Marisael

21/08/2010 12:03:29
Quote Anchor link
@Jeroeb:
de eerste telnet gaf als antwoord:
220 mx.google.com ESMTP v8sm6551........
en de tweede mogelijkheid gaf een soortgelijk antwoord retour.

@Peter:
de mogelijkheid tot html-verenden moet vanaf een site draaien.
deze staan bij vevida.nl en/of mijndomein.nl
ik heb dus 2 keuze mogelijkheden om te testen.
Verder ben ik o.a. dit nog tegen gekomen:
http://www.webhostingtalk.com/showthread.php?t=416467
de eerste mogelijkheid geeft een 500-fout
de MIME-versie verstuurd daadwerkelijk een mail, echter gewoon in tekst en geen HTML

UPDATE:
ondertussen ben ik alweer met een andere list aan het stoeien:
http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php#html
deze werkt wel, ondertussen ben ik al zover dat ik aan de BCC werk.
ik heb begrepen dat je met file_get_contents meerdere adressen kunt invoeren?
Gewijzigd op 21/08/2010 14:05:27 door Piet Marisael
 
Aad B

Aad B

21/08/2010 18:17:45
Quote Anchor link
Piet Marisael op 21/08/2010 06:44:55:
met de bovenstaande gegevens ingevuld krijg ik de melding terug:

SMTP Error: Could not connect to SMTP host. Mailer Error: SMTP Error: Could not connect to SMTP host.

Krijg dus geen contact met de SMTP.
Vraag me nu nog af of ik iets in class.phpmailer.php en/of class.smtp.php moet aanpassen?
In class.smtp.php staat:

public $SMTP_PORT = 25; // werkt neiet bij mij

heb dit verandert in:

public $SMTP_PORT = 465; // ook geen resultaat te zien.

Waar zit nu die fout, blijkbaar gaat hij dan toch bij Gmail connecten!

Of zou het moeten zijn dat ik de smtp van mijn eigen provider moet gebruiken?

Heb je ook wel je host goedgezet?
$mail->Host = "ssl://smtp.gmail.com";
 
Piet Marisael

Piet Marisael

21/08/2010 18:48:53
Quote Anchor link
@Aad B:

Jazeker had ik die goed gezet.

Alleen ben ik helemaal van PHPmailer afgestapt.
Ben de gehele dag aan het snuffelen geweest op internet en flink aan het testen geweest.
Momenteel ben ik zover dat ik een werkend script heb. Hoera!
De code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php

$adresArray
= array(
"Piet" => "[email protected]",
"pja" => "[email protected]",
"ikke" => "[email protected]",
"test" => "[email protected]",



 //etc
);

//define the receiver of the email

$cc = '';

$to = '[email protected]';

//define the subject of the email

$subject = 'Test email';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash

$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: [email protected]\r\nReply-To: [email protected]";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"";

foreach($adresArray AS $name => $adres) {
      
      $cc .= $name .' <'. $adres .'>, ';
    }

    $headers .= "Bcc: ". $cc ."\r\n";


//define the body of the message.
ob_start(); //Turn on output buffering
?>

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Indien u deze mail niet goed ontvangt, ga dan naar de website.

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl-nl" lang="nl-nl" dir="ltr" >
<head>


DE HTML-pagina.

</body>
</html>
--PHP-alt-<?php echo $random_hash; ?>--
<?
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail  verzonden." : "Mail failed";
?>


Er zal hier en daar heus wel iets niet echt fraai uitzien, ben tenslotte maar een beginner.
Maar het werkt, alleen de return-path gaat niet naar het ingevulde maar naar de recycler van de server(?) [email protected] de vuilnisbak zo te zien.

Verder wil ik de pagina beveiligen met een inlog.
Ook al gevonden:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
session_start();


//----------------------------------------
// Verander de gegevens hieronder:

// De gebruikersnaam voor de Admin

$gebruikersnaam = "NAAM";
// Het wachtwoord voor de Admin
$wachtwoord = "WACHTWOORD";
// Jouw website naam
$jouwWebsiteNaam = "www.website.nl";
// Jouw e-mailadres
$jouwEmail = "BEKEND";
// De locatie van het databestand
$dataBestand = "niet meer nodig";


// Hierna hoef je niks meer te veranderen!
//----------------------------------------



?>

<html>

<head>

<title>Nieuwsbrief Versturen</title>

</head>

<body>

<center>

<font face="Arial" size=2>

<h3>Nieuwsbrief Versturen</h3>
<br>
<?php

if($gebruikersnaam == $_POST['gebruikersnaam'] && $wachtwoord == $_POST['wachtwoord'] && $_SERVER['REQUEST_METHOD'] == 'POST' ) {




$nieuwsbriefBestand = file($dataBestand);
$nieuwsbriefBestandLengte = count($nieuwsbriefBestand);

$groepenTeller = 0;

for($i = 0; $i < ($nieuwsbriefBestandLengte+50); $i+=50) {
$groep = null;
$groepenTeller++;
for($a = $i; $a < ($i+50); $a++) {
if($nieuwsbriefBestand[$a]) {
$groep .= chop($nieuwsbriefBestand[$a]).",";

}
}

if($groep) { $groepen[] = $groep; }
}


if($html) {
$opmaak = "Content-type: text/html; charset=iso-8859-1\r\n";
}


if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['bericht']) && !empty($_POST['onderwerp']))  {
for($g = 0; $g < count($groepen); $g++) {
$to = $jouwEmail;
$subject = stripslashes($_POST['onderwerp']);
$message = stripslashes($_POST['bericht']);
//CC header voor controle
//ter controle of de mail wel naar de juiste wordt verzonden letop dit is echt alleen om te testen
//$headers = 'Cc:'."$groepen[$g]". "\r\n";
// einde controle

$headers = 'Bcc:'."$groepen[$g]". "\r\n";
$headers .= 'From:'."$jouwWebsiteNaam"."<$jouwEmail>". "\r\n";
    mail($to, $subject, $message, $headers);
}
    
echo("<b>De nieuwsbrief is succesvol verstuurd!</b><br><br><hr><br>");
}



?>


<form action="" method="post">
Onderwerp:<br><input type="text" name="onderwerp" size=20><br><br>
Bericht:<br><textarea cols=40 rows=20 name="bericht"></textarea><br><br>
<input type='checkbox' name='html'> HTML gebruiken<br><br>
<input type='hidden' name='wachtwoord' value='<?php echo $wachtwoord; ?>'>
<input type='hidden' name='gebruikersnaam' value='<?php echo $gebruikersnaam; ?>'>
<input type="submit" value="Verstuur">
</form>
</center>
<br><br>
<?php

echo("Er zijn $nieuwsbriefBestandLengte mensen lid van de nieuwsbrief:<br><br>");

for($g = 0; $g < count($groepen); $g++) {
  
echo("$groepen[$g]<br>\n");
}

}


else {
echo "<form method='post'>\n";
echo "Gebruikersnaam: <input type=text name='gebruikersnaam'><br>\n";
echo "Wachtwoord: <input type=password name='wachtwoord'><br>\n";
echo "<br><input type='Submit' value='Login'>\n";
echo "</form></center>";
}


?>

<br>
</font>

</center>

</body>

</html>


alleen daar gaat mijn kennis de mist in om de tweede code te strippen en het nodige in de eerste code te plaatsen.

Kan er iemand mij verder helpen?
Gewijzigd op 21/08/2010 21:31:35 door Piet Marisael
 
Noppes Homeland

Noppes Homeland

21/08/2010 18:55:17
Quote Anchor link
Een script wat dus niet echt voldoet aan de benodigde controles en validaties en de script logica is ook ver te zoeken.

- empty is een zinloze functie
- stripslashes over $_POST moet niet gekker worden, duid erop dat het een en ander niet goed geconfigureerd staat
- ob functies in principe uit den boze
- php variabelen buiten quotes
enz enz
 
Piet Marisael

Piet Marisael

21/08/2010 19:01:50
Quote Anchor link
@Noppes:
ik moest even zoeken waar je het over had :-)
Het gaat voornamelijk over dat de beveiling van de onderste code (rest kan weg) in de eerste code komt die er boven staat.
 



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.