2017-03-18 1 views
0

Je développe une application rails et utilise ActionMailer pour envoyer des emails aux utilisateurs. Je sais comment inclure des pièces jointes dans chaque e-mail. Mais je me demandais si je peux fournir un bouton dans la vue mailer pour télécharger explicitement une pièce jointe particulière en tant qu'amélioration de l'interface utilisateur.Puis-je inclure un bouton pour télécharger une pièce jointe dans un courriel?

Mise à jour:

J'ai oublié honnêtement parler de quelque chose d'important à ce sujet. Le point de terminaison final que j'ai besoin de construire pour télécharger le fichier à partir du courrier électronique doit être authentifié via Autorisation en-tête, et sa valeur est un jeton codé en utilisant base64. Je ne sais pas s'il y a une vulnérabilité en envoyant ce jeton dans l'email.

+0

Je dirais que l'envoi d'un jeton d'autorisation dans un e-mail est presque identique à l'envoi d'un mot de passe sur une carte postale. Pourquoi l'URL de téléchargement nécessite-t-elle une autorisation si vous envoyez le lien par e-mail? Pourquoi la connexion en premier (avant le téléchargement) n'est-elle pas une option? À quel point le jeton est-il raisonnable, est-il un jeton ponctuel ou quelqu'un pourrait-il réutiliser le jeton pour d'autres demandes? – spickermann

+0

Le flux est le suivant: un utilisateur consomme un point de terminaison depuis une application Android vers le serveur rails que je suis en train de construire. En réponse, un rapport contenant des informations sensibles (fichier CSV) est envoyé par courrier électronique à l'utilisateur. Pour cette raison, le point de terminaison nécessite une authentification. Donc, je pense à créer un autre point de terminaison qui répond directement au fichier CSV, mais il doit aussi être authentifié. Le jeton peut être réutilisé pour d'autres demandes. – gualopezb

+0

Une autre option serait de créer un lien vers le fichier CSV joint, mais je ne sais pas si c'est possible – gualopezb

Répondre

0

Bien sûr. Le bouton peut être lié à une action du contrôleur dans votre application rails qui envoie le fichier à l'utilisateur comme si l'utilisateur avait cliqué dessus pour le télécharger lors de la navigation dans votre application.

0

Faites ceci en route.rb

get "controller/action" , as: :download 

en vue Mailer, ajoutez

<%= link_to "DOWNLOAD", download_path %> 

dans votre contrôleur faire quelque chose comme

def download 
    send_file 'path_to_your_file',:type=>"application/extension_of_your_file", :x_sendfile=>true 
end 

L'autre façon

Vous pouvez simplement mettre votre fichier dans le dossier public, puis il suffit de mettre un lien pour télécharger dans votre vue mailer comme:

<%= link_to 'name of button', 'http:// your_website/your_file_name' %> 

également la prochaine fois assurez-vous d'ajouter du code à votre question sur ce que vous avez essayé ou ce que vous prévoyez de réaliser votre question.