2010-07-10 5 views
1

Je vais essayer encore une fois car ma dernière question pourrait être source de confusion. J'ai un formulaire simple web composé des entrées suivantes (pour l'instant, prétendre que j'ai deux entrées, nom et fichier d'entrée). Je veux que l'utilisateur télécharge un document (si possible limiter à .doc, .docx, .pdf, si ce n'est pas possible accomplir, limitons juste à .doc), et je veux limiter la taille à moins de 2MB.Envoyer un simple fichier attaché via la fonction PHP mail()

Permettez-moi de reformuler ceci. Le fichier à joindre est et NON sur le serveur Web. Il sera téléchargé dynamiquement dans un dossier temporaire, envoyé via le script de messagerie, puis supprimé.

Si cela est possible d'accomplir, s'il vous plaît, j'ai besoin de toute l'aide que je peux obtenir.

J'ai essayé Swiftmailer, PHPMailer, PEAR, je n'arrive pas à les faire fonctionner. Tout ce dont j'ai besoin est un script simple pour envoyer un fichier joint, rien de plus. Aucune validation nécessaire, rien.

Toute aide serait grandement apprécié.

Merci beaucoup, Amit

+0

Vous feriez mieux de poser des questions sur des problèmes spécifiques que vous avez avec l'une des autres solutions ci-dessus. Les amener à travailler est BEAUCOUP plus facile que d'essayer de rouler votre propre solution. Le fait est que les pièces jointes ne sont pas si simples. – Cfreak

Répondre

4

Il est possible de faire avec les 3 bibliothèques que vous avez énumérés (phpmailer, PEAR et Swiftmailer).

Pour PHPMailer vous pouvez voir un tutorial here:

require_once '../class.phpmailer.php'; 

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch 

try { 
    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->AddAddress('[email protected]', 'John Doe'); 
    $mail->SetFrom('[email protected]', 'First Last'); 
    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->Subject = 'PHPMailer Test Subject via mail(), advanced'; 
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically 
    $mail->MsgHTML(file_get_contents('contents.html')); 
    $mail->AddAttachment('images/phpmailer.gif');  // attachment 
    $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment 
    $mail->Send(); 
    echo "Message Sent OK<P></P>\n"; 
} catch (phpmailerException $e) { 
    echo $e->errorMessage(); //Pretty error messages from PHPMailer 
} catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 

AddAttachment prendra un fichier de votre serveur.

Comment télécharger un fichier à partir d'un formulaire HTML peut être found here. Une fois votre email envoyé, vous pouvez supprimer (unlink) le fichier du serveur.

Le PHP manual can help you permet de mieux télécharger les fichiers. Tout ce que vous voulez faire est facile à réaliser, mais il est plus long à expliquer que le faire :) Mais avec tous les liens que je vous ai donné, vous avez tout ce dont vous avez besoin. Si vous avez des questions spécifiques faites le moi savoir.

+0

Merci beaucoup! très appréciée – Amit