PHPMailer “Impossible D'Accéder Au Fichier:”
Je suis en train d'envoyer un fichier qui existe sur mon serveur à l'aide de PHPMailer. Lorsque j'exécute ce code, j'obtiens "impossible d'accéder au fichier" et envoie l'e-mail sans pièce jointe... quel est le problème ici??
<html>
<title>Email Sent!</title>
<?php
include("menu.php");
include("sqlconnect.php");
require_once('../PHPMailer/class.phpmailer.php');
$path = $_POST['path'];
$filename = $_POST['filename'];
$newpath = "Library/WebServer/Documents/Inventory/".$path;
define('GUSER', '[email protected]'); //GMail username
define('GPWD', 'xxxxxxx'); //GMail password
function smtpmailer($to, $from, $from_name, $subject, $body) {
global $error;
$mail = new PHPMailer(); //create a new object
$mail->IsSMTP(); //enable SMTP
$mail->SMTPDebug = 0; //debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; //authentication enabled
$mail->SMTPSecure = 'ssl'; //secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($to);
$attachtest = $mail->AddAttachment($newpath);
if(!$mail->Send()) {
$error = 'Mail error: '.$mail->ErrorInfo;
return false;
} else {
$error = 'Message sent!';
return true;
}
}
smtpmailer('[email protected]', '[email protected]', 'Name', 'test mail message', 'Hello World!');
?>
</html>
- Aussi loin que je peux dire, vous n'êtes jamais à l'aide de votre
$filename
variable. Est qui est-il destiné? Aussi, vous n'avez pas à passer$newpath
dans votre fonction en tant que paramètre. - Eh bien, lorsque j'utilise AddAttachment, vous pouvez spécifier un nom de fichier pour renommer le fichier une fois qu'il est relié. Je ne suis pas à l'utiliser pour le moment car j'ai besoin de la fonctionnalité première. Et dois-je en passer c'est comme un paramètre?
- Je ne vois pas d'autre endroit dans votre script où le fichier peut être lu à partir du système de fichiers. Code manquant? Quelle partie du code génère ce message d'erreur?
- Je ne suis pas sûr, je pense que c'est le AddAttachment ligne, parce que j'ai commenté tout le reste et quand il frappe cette ligne, il se produit une erreur.
- Essayez
echo $newpath;
juste avant cette ligne. AddAttachment est probablement d'essayer de joindre votre fichier, mais vous passez une chaîne vide. - quand je écho avant la fonction, il imprime le chemin d'accès sur la page. Mais si je fais écho à l'intérieur de la fonction, juste avant AddAttachment, rien n'est fait l'écho/imprimé.
- Comme je l'ai dit. Vous ne passez pas
$newpath
dans votre fonction. Ainsi, il est une chaîne vide. function smtpmailer($to, $from, $from_name, $subject, $body, $newpath)
?- Exactement. J'ai ajouté une réponse avec le code pour vous.
- Il a travaillé!! J'ai utilisé le chemin d'accès $au lieu de $newpath quand j'ai appelé la fonction si. Fonctionne parfaitement maintenant! Merci!
InformationsquelleAutor denbjornen | 2012-07-01
Vous devez vous connecter pour publier un commentaire.
Essayer de passer le chemin d'accès correct dans votre fonction comme ceci
et en l'appelant comme
Assurez-vous que l'utilisateur ou le groupe que Apache et PHP sont en cours d'exécution en vertu de l'avoir au moins des autorisations de LECTURE sur le fichier.
Ce problème est commun, si vous travaillez sur un serveur et télécharger des fichiers en utilisant le protocole sFTP/SSH en tant qu'utilisateur différent.
Découvrir ce groupe et d'utilisateur apache/php sont en cours d'exécution en vertu de l', et donnent à l'utilisateur et de groupe d'accès en lecture sur le fichier que vous essayez d'attache.
J'ai eu le même problème.
J'avais besoin pour exécuter une commande extra dans mon script php qui move_uploaded_file() pour un répertoire interne de mon hôte à la maison, alors maintenant, je pouvais envoyer la pièce jointe.
Que mon astuce qui fonctionne bien pour moi 🙂