我正在开发一个网站,我曾经发邮件确认题词。我有3页,第三页包含函数envoi()发送邮件。 但它告诉我这个错误。 警告:trim()期望参数1为字符串,对象在第849行的C:\ Program Files(x86)\ EasyPHP-DevServer-14.1VC9 \ phpmailer \ class.phpmailer.php中给出
inscription.php:
<div id="admin" style="float:right;clear:right;width:650px; height:515px; border-radius:30px 30px 30px 30px; border:solid 3px black;margin-right:10px;">
<p style="float:left;"><img src="..\ETT\img\admin.png" alt="admin" width="40" height="40" style="margin:10px 30px; border-radius: 50%;float:right;"></p>
<p style="padding:7px;"><h4>Admin</h4></p>
<form action="validepageone.php" method="post" style="padding-left: 130px;" enctype="multipart/form-data" >
<label for="firstname" style="color:red;">first_name *</label>
<input id="firstname" name="firstname" type="text" />
<label for="lastname" style="color:red;">last_name *</label>
<input id="lastname" name="lastname" type="text" />
<label for="mail" style="color:red;">mail *</label>
<input id="mail" name="mail" type="text" />
<label for="mobile" style="color:red;">mobile *</label>
<input id="mobile" name="mobile" type="text" />
<label for="adresse" style="color:red;">adress *</label>
<input id="adresse" name="adresse" type="text" />
<label for="password" style="color:red;">password *</label>
<input id="password" name="password" type="text" /></br>
<input type="submit" value="submit" name="admin" style="margin- left:70px;margin-top:20px;">
</form>
</div>
valideinscription.php:
<?php
require "connexion.php";
require 'traitement.php';
if(isset($_POST['admin'])){
if( isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['mail']) && isset($_POST['mobile']) && isset($_POST['adresse'])&&isset($_POST['password'])){
$a=$_POST['mail'];
$b=$_POST['lastname'];
$c=$_POST['firstname'];
$d=$_POST['adresse'];
$e=$_POST['mobile'];
$f=$_POST['password'];
$a=trim($a);
$c=trim($c);
echo 'bien';
$vara=admin::existmail($a);
if(!$vara){
$varb=admin::addadmin($c,$a,$e,$d,$b);
$varc=admin::adduser($a,$f);
$vara=admin::envoi($a,$c);
}
else {echo 'existe';}
}}
traitement.php:
require_once('C:/Program Files (x86)/EasyPHP-DevServer- 14.1VC9/phpmailer/PHPMailerAutoload.php');
public static function envoi($mail,$nom) {
$mail = new PHPmailer(); // instanciation de celle-ci
$mail->IsSMTP(); // activation des fonctions SMTP
$mail->SMTPAuth = true; // on l’informe que ce SMTP nécessite une autentification
$mail->Host = "ssl://smtp.gmail.com"; // définition de l’adresse du serveur SMTP de Gmail
$mail->Port = 465; // définition du port du serveur SMTP de Gmail
$mail->Username = "xxxx@gmail.com"; // le nom d’utilisateur SMTP
$mail->Password = "xxxx"; // son mot de passe SMTP
$mail->AddAddress($mail, $nom);
$mail->From = "xxxxxx@gmail.com"; // adresse email de l’expéditeur
$mail->FromName = "xxx"; // nom de l’expéditeur
$mail->IsHTML(true); // envoie de l’email au format HTML
$mail->Subject = "mail de validation";
$mail->Body = "Bonjour Mr".$nom.",</br>nous vous confirmons votre inscription,votre compte sera activé lors d'un clic sous <a href='http://localhost/projects/ETT/activecompte.php?$nom'> ce lien</a>" ; // le corps de texte de votre email en HTML
if(!$mail->Send()) { // envoie de l'email
return 'Mailer Error: ' . $mail->ErrorInfo; // affichage des erreurs, s’il y en a
} else { //Ouf tout va bien…
echo 'mail passé';
}
}
答案 0 :(得分:1)
$mail->AddAddress($mail, $nom);
^--mail object ^--mail object AGAIN
你不能使用你用来发送邮件的$ mail邮件作为电子邮件的电子邮件地址。
这意味着:
public static function envoi($mail,$nom) {
^---email address to use
$mail = new PHPmailer(); // instanciation de celle-ci
^---destroy email address and replace with mailer object
是真正的问题。
答案 1 :(得分:0)
只需更改方法定义:
public static function envoi( $email, $nom )
然后,在函数内部,替换这一行:
$mail->AddAddress($mail, $nom);
这一个:
$mail->AddAddress( $email, $nom );
在您的代码中,您传递的是->addAddress
他们自己的对象,而不是电子邮件地址字符串。