En fait, dans ma page de détails d'une publication, j'ai un bouton de téléchargement. Lorsque nous cliquons sur "téléchargement", une fenêtre s'ouvre dans laquelle nous entrons l'e-mail de l'utilisateur destinataire et un lien pdf sera envoyé à cet e-mail. J'ai réussi à afficher le popup mais je n'ai pas trouvé de solution pour envoyer le lien de téléchargement PDF. Je ne sais pas comment récupérer ce lien en sachant que lors de l'ajout d'une publication, j'ai un fichier qui sera enregistré dans la base de données en tant qu'attribut de fichier contenant le nom du fichier avec l'extension pdf. merci de me donner de l'aide, j'ai cherché, mais malheureusement je n'ai pas trouvé la solution que je recherche. J'ai créé la fonction email mais je suis bloqué je ne sais pas comment procéder plus tard.
Framwork Symfony 3.4
A voir également:
Crypter un lien url
Php télécharger fichier depuis url - Meilleures réponses
Déjà ... "un lien pdf " .. ça ne veut rien dire....
On peut dire : Un lien hypertext, un lien html (à la rigeur), un lien d'un fichier pdf (éventuellement)
Ensuite... on ne comprend pas sur quoi tu bloques exactement...
- L'envoie d'un mail ?
- L'affichage du lien dans le mail ?
- La récupération du lien du fichier à envoyer en fonction du bouton sur lequel l'utilisateur a cliqué ?
Et puis.. on ne sait rien de ton code.... il serait bien de montrer un minimum le code que tu utilises pour qu'on puisse essayer de comprendre...
Bonjour, avant tout pour tous les explications, voilà donc j'ai réussi à créer le popup et de récupérer le fichier que je veux envoyer son lien par email par la suite.
le problème maintenant que je n'ai pas pu recevoir un email .
je vais vous montrer mon code source :
/**
*
* @Route("/{id}/sendLink", name="link_english_pub")
*
*/
public function sendLinkAction($id) {
$form = $this->createForm('MDWEB\FrontBundle\Form\InEnglishModalShowType');
$request = $this->container->get('request_stack')->getCurrentRequest();
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
// $inenglish = $em->getRepository('MDWEBInEnglishBundle:InEnglish')->find($id);
// if ($form->handleRequest($request)->isValid()) {
$inenglish = $em->getRepository('MDWEBInEnglishBundle:InEnglish')->find($id);
$link = $inenglish->getFile();
var_dump($link);
$user = $this->get('security.token_storage')->getToken()->getUser();
$this->sendEmail($user, $inenglish, $link);
var_dump($this->sendEmail($user, $inenglish, $link));
//cette ligne me renvoie null
return $this->render('MDWEBFrontBundle:InEnglish:show.html.twig', array(
'form' => $form->createView(),
'inenglish' => $inenglish,
));
}
//function send email
private function sendEmail($user, $inenglish, $link) {
//Setup the message
$message = \Swift_Message::newInstance()
// subject of message
->setSubject('Nouvelle publication : ' . $inenglish->getTitle())
// source of message
->setFrom('mandrill@tunisienumerique.com')
// sent message receiver
->setTo($user->getEmail())
// content of message
->setBody($this->renderView('MDWEBFrontBundle:InEnglish:email.html.twig', array('user' => $user, 'inenglish' => $inenglish, 'link' => $link), 'text/html'));
// send the message
$this->get('mailer')->send($message);
}
voilà le contenu de email.html.twig
<!DOCTYPE html>
<html>
<head>
<title>Publication : {{inenglish.title}}</title>
</head>
<body>
<p>
Bonjour {{ user.username | capitalize }},
<br><br>
vous avez une nouvelle publication dont la catégorie est : {{ inenglish.Categorie}}<br>
Pour consulter le détail de cette publication , merci de vous rendre sur :
<a href="{{inenglish.file}}" target="_blank">{{inenglish.file }}</a>
<br><br>
Cordialement,<br>
____<br>
<strong>MD-Web</strong>
</p>
</body>
</html>
De quel lien parles tu ???
Juste avant tu nous as dit
j'ai réussi à créer le popup et de récupérer le fichier que je veux envoyer son lien par email par la suite.
... donc il est où le problème ???
Le fichier est stocké sur le disque ou directement en BDD ???
Si en BDD... tu dois, au choix :
Avoir une page qui récupère le fichier à afficher (et c'est son url que tu envoies par mail), soit tu as le fichier sur le disque ... et dans ce cas c'est le chemin vers ce fichier que tu indiques dans le lien.....
Je ne comprends vraiment pas ton souci....
D'accord le fichier en fait est stocké en BDD sous forme d'un attribut file avec extension de cette manière ' 6c2550734e19fb6b5c91e2b80f9285cd.pdf ' par la suite il est enregistré dans /web/uploads/6c2550734e19fb6b5c91e2b80f9285cd.pdf.
quelle est la bonne méthode entre ces 2 : utiliser l'attribut file de la BDD ou bien le chemin du file sous le dossier /web ?
merci!
Il faut que tu puisses accéder au fichier depuis ton navigateur...
Pour cela, le dossier /web/uploads doit être accessible...
Tu dois donc, normalment, pouvoir mettre une URL du style
https://tonsite.fr/uploads/6c2550734e19fb6b5c91e2b80f9285cd.pdf et ça doit normalement afficher le document.
merci beaucoup pour les explications. si vous permettez de me donne l'aide encore une parce que je n'ai pu recevoir un email. lors de l'envoie je trouve comme résultat null je n'ai pas pu trouver où se trouve le problème exactement malgré j'ai suit le lien que vous m'avez envoyé et j'ai cherché sur internet aussi.
En fait j'ai utilisé le console et j'ai effectué avec commande ( php bin/console swiftmailer:email:send ) , j'ai entré les paramétres nécessaires pour envoyer et recevoir un email et enfin j'ai reçue un email.
Je pense le problème se situe au niveau de la méthode que j'ai crée merci de la vérifier avec si vous permettez parce que vraiement je n'ai pu trouver la source de problème.
Merci!
C'est j'ai trouvé la solution en fait j'ai entré un email valide dans le popup qui ne correspond pas à celle qui se trouve dans la BDD, je vais travailler sur la récupération du lien maintenant si j'ai rencontré un problème je vais vous contacté.
merci énormément.
merci , d'accord.
juste j'ai une question concernant l'email j'ai un problème dans le contenu de l'email je reçois le contenu de la page html comportant les balise je ne sais pas pourquoi ? est ce que vous avez une idée ?
voilà le contenu de l'email reçu c'est le même contenu que j'ai mis dans email.html.twig
<html>
<head>
<title>Publication : {{inenglish.title}}</title>
</head>
<body>
<p>
Bonjour {{ user.username | capitalize }},
<br><br>
vous avez une nouvelle publication dont la catégorie est : {{ inenglish.Categorie}}<br>
Pour consulter le détail de cette publication , merci de vous rendre sur :
<a href="{{inenglish.file}}" target="_blank">{{inenglish.file }}</a>
<br><br>
Cordialement,<br>
____<br>
<strong>MD-Web</strong>
</p>
</body>
</html>
Lors de l'envoie du mail il faut indiquer le format "html".
Si toi tu vois les balises de code..;c'est que le mail est envoyé en format text.
lorsque tu génères ton swift mailer, un truc du genre
ben ça devrait être bon.
Si ça ne fonctionne pas... essaye sur une autre messagerie. Si ça se trouve celle que tu utilises affiche en format text uniquement.
j'ai essayé avec seulement le format html puis avec le text seulement mais rien est changé sachant que j'ai utilisé le code dans un autre projet et ça fonctionne correctement avec les mêmes paramètres. je suis étonné vraiment c'est pourquoi j'ai posé la question.
Aussi j'ai réussi à récupérer le lien , l'envoyer par email et j'ai pu l'ouvrir pour voir son contenu
voilà la dernière correction concernant la récupération du lien (c'est déjà écrit dans le controller mentionné dans l'explication que j'ai mis dés le début) et son envoi par email voilà le la page email.html.twig:
<!DOCTYPE html>
<html>
<head>
<title>Publication : {{inenglish.title|raw}}</title>
</head>
<body>
<p>
Bonjour {{ user.username | capitalize|raw }},
<br><br>
vous avez une nouvelle publication dont la catégorie est : {{ inenglish.Categorie|raw}}<br>
Pour consulter le détail de cette publication , merci de vous rendre sur :
<a href="http://localhost/Ites/SiteITES/web/uploads/englishs/files/{{inenglish.file}}" target="_blank">{{inenglish.file}}</a>
<br><br>
Cordialement,<br>
____<br>
<strong>MD-Web</strong>
</p>
</body>
</html>
Enfin merci beaucoup Jordane45 pour ton aide et tous les explications que vous m'avez donné
Modifié le 11 sept. 2018 à 20:21
le problème maintenant que je n'ai pas pu recevoir un email .
je vais vous montrer mon code source :
voilà le contenu de email.html.twig
11 sept. 2018 à 20:48
Si en local, faudra faire un truc du genre
https://www.developpez.net/forums/d1023479/php/bibliotheques-frameworks/symfony/swiftmail-envoi-mail-localhost/#post5738751
Modifié le 11 sept. 2018 à 21:12
et comment faire pour la récupération du lien.
merci! j'espère que je ne te dérange pas.
11 sept. 2018 à 21:31
Juste avant tu nous as dit
... donc il est où le problème ???
Le fichier est stocké sur le disque ou directement en BDD ???
Si en BDD... tu dois, au choix :
Avoir une page qui récupère le fichier à afficher (et c'est son url que tu envoies par mail), soit tu as le fichier sur le disque ... et dans ce cas c'est le chemin vers ce fichier que tu indiques dans le lien.....
Je ne comprends vraiment pas ton souci....
Modifié le 11 sept. 2018 à 22:10
quelle est la bonne méthode entre ces 2 : utiliser l'attribut file de la BDD ou bien le chemin du file sous le dossier /web ?
merci!