contactformulier keuze bestemming

Status
Niet open voor verdere reacties.
Code:
$mail->Subject  = 'First PHPMailer Message';
$mail->Body     = 'testbericht';
Als de waardes gewoon hardcoded in je script staan, zullen ze nooit zomaar veranderen.
Je moet er een variabele aan hangen van een textveld o.i.d.

Ik denk dat je dat dus wilt?
 
Code:
<?php
require '../phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;

//$mail->isSMTP();
$mail->Host = 'mail.axc.nl';
$mail->SMTPAuth = true;
$mail->Username = 'guido@domein.nl';
$mail->Password = 'geheim';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->setFrom('guido@domein.nl', 'Guido ');
$mail->addAddress('vriend@domein.nl', 'Vriend');
$mail->Subject = 'PHPMailer mail() test';
$mail->Body     = 'testbericht 13:41';
//$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
$mail->AltBody = 'This is a plain-text message body';                       
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

Bovenstaande code werkt goed zolang ik regel 6 commented heb. Ik krijg netjes een mail met de gevraagde inhoud.
Wanneer ik regel 6 uncomment, krijg ik een error 500. Wat doe ik fout?
 
Haal de comments voor $mail->isSMTP(); weg. Dan mail je via SMTP.

Errors bij een Error 500 kan je vinden door de error_log te bekijken of foutafhandeling in PHP of .htaccess aan te zetten.
 
Laatst bewerkt:
Weer een stapje verder:
Fatal error: Class 'SMTP' not found in ....class.phpmailer.php on line 1466

Maar nu? Heb ik een oudere versie? Wat kan ik doen om deze fout op te lossen?

Regel 1458-1468 van class.phpmailer.php
Code:
    /**
     * Get an instance to use for SMTP operations.
     * Override this function to load your own SMTP implementation
     * @return SMTP
     */
    public function getSMTPInstance()
    {
        if (!is_object($this->smtp)) {
            $this->smtp = new SMTP;
        }
        return $this->smtp;
 
Laatst bewerkt:
Hoe roep je het boeltje nou aan?
Gokje, je gebruikt niet de autoloader of je mist een include.

Aan de code van phpMailer zelf hoef je zelf echt niet te sleutelen.
 
Laatst bewerkt:
Hoe roep je het boeltje nou aan?
Gokje, je gebruikt niet de autoloader of je mist en include.

Op mijn eigen subdomein staat test1.php met de inhoud van bericht #22. Op een niveau hoger is ook een submap phpmailer (daarheen verwijst immers regel #2). In die submap staat naast PHPMailerAutoload.php slechts class.phpmailer.php en een subdirectory languages met daarin phpmailer.lang-nl.
Ik vrees dat hierin iets mist... :(
Ik was al ergens iets tegengekomen over een automatische update, maar dat kan ik niet meer terugvinden.
 
Laatst bewerkt:
En dan is nog steeds de vraag hoe je het aanroept, naast dat je heb beantwoord hoe je het opgebouwd hebt.
 
Je roept phpMailer toch op een manier aan? Laat dat eens zien?
includes, class aanroepen etc...
 
Laatst bewerkt:
Dan zou ik je toch maar eens aanraden om de examples terug te kijken ;-)
 
Als ik het goed begrijp wordt met
Code:
require '../phpmailer/PHPMailerAutoload.php';
automatisch de class.phpmailer.php gevonden, maar ik ben er nog niet achter wat ik moet doen om die foutmelding
Class 'SMTP' not found in class.phpmailer.php on line 1466
weg te krijgen...
 
Al gegooled op de melding?
En welke PHPversie heb je?
 
Zie phpinfo(), die geeft de versie aan.
Maar ik denk dat je inderdaad een SMTP class mist, want met PHP 5.5 en > moet je autoloader prima werken.

Heb je wel heel phpmailer gedownload?
 
Zie phpinfo(), die geeft de versie aan.
Volgens mij moet ik daarvoor shell-toegang hebben. Dat heb ik niet.

Maar ik denk dat je inderdaad een SMTP class mist, want met PHP 5.5 en > moet je autoloader prima werken.
Heb je wel heel phpmailer gedownload?

Ik herinner het me niet meer volledig. Ik heb daarom nu de inhoud van PHPMailer-master.zip geüpload naar de phpmailer-directory.

Nu verder proberen...
 
Volgens mij moet ik daarvoor shell-toegang hebben. Dat heb ik niet.
Welnee, welnee! Of je hosting moet die functie geblokkeerd hebben, maar dat zou stom zijn.
Maar ik zou je includes eens goed controleren, en kijken of je de hele directory wel een beetje compleet hebt.
 
Welnee, welnee! Of je hosting moet die functie geblokkeerd hebben, maar dat zou stom zijn.
Maar ik zou je includes eens goed controleren, en kijken of je de hele directory wel een beetje compleet hebt.

Oeps, zwart uitje.
Ik heb PHP Version 5.5.38
 
Moet geen bezwaar kunnen zijn. Dus check of alles compleet is en de include/require goed verwijst. Laat anders eens je relevante code zien van je integratie.
 
Laatst bewerkt:
Volgens mij heb ik inmiddels een werkend script.

e.html
HTML:
<form method="post" action="e.php">
<table width="450px">
<tr>
 <td valign="top">
  <label for="msgvoor">Bericht voor:</label>
 </td>
 <td valign="top">
	<SELECT name="aan">
		<OPTION>Maak uw keuze</OPTION>
		<OPTION value="g">secretaris</OPTION>
		<OPTION value="ge">webmaster</OPTION>
	</SELECT><br>
 </td>
</tr>
<tr>
  <td valign="top">Uw naam:
  <td valign="top"><input name="naam" id="naam" type="text" /><br />
<tr>
  <td valign="top">Uw e-mailadres:
  <td valign="top"><input name="email" id="email" type="text" /><br />
<tr>
  <td valign="top">Uw vraag, opmerking of bericht:<br />
  <td valign="top"><textarea name="bericht" id="bericht" rows="15" cols="40"></textarea><br />
<tr>
  <td><input type="submit" value="Verzenden" />
</form>

e.php
PHP:
<?php
$naam = $_REQUEST['naam'] ;
$email = $_REQUEST['email'] ;
$bericht = $_REQUEST['bericht'] ;
$aan = $_REQUEST['aan'] ;

require("../phpmailer/PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->From = "webmaster@domein.nl";
$mail->FromName = "Webmaster domein.nl";

if ($aan == "g") {
	$aanmail = "secretaris@domein.nl";
    $mail->AddAddress($aanmail, "secretaris domein");
}
if ($aan == "ge") {
	$aanmail = "webmaster@domein.nl";
    $mail->AddAddress($aanmail, "webmaster domein.nl");
}

$mail->WordWrap = 50;
$mail->IsHTML(true);

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$mail->setFrom($result["email"], $result["naam"]);

$email_message = "Details van het ingestuurde bericht.\n\n";
$email_message .= "Aan: ".clean_string($aan)."\n";
$email_message .= "Van: ".clean_string($naam)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Bericht: ".clean_string($bericht)."\n";

$mail->Subject = "Reactie vanaf de website";

$mail->Body    = $email_message;
$mail->AltBody = $email_message;

if(!$mail->Send())
{
   echo "Bericht kan niet verzonden worden. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Bericht is verzonden.";
?>

Een kleinigheidje wat ik nog moet oplossen is dat de ontvangen e-mail één lange regel tekst. Ik meende met "\n" een nieuwe regel te kunnen beginnen. De mail bevat nu:
Code:
Details van het ingestuurde bericht. Aan: g Van: test Email: test@domein.nl Bericht: testbericht van test voor Guido

Graag hoor ik ter leringh ende vermaeck welke verbeteropties er hierin nog zijn aan te brengen.

Vriendelijke groet,
Guido
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan