2017-07-14 2 views
-5

Je souhaiterais intercepter l'événement d'envoi et annuler l'e-mail avant qu'il ne soit réellement envoyé. Je meand: chaque fois qu'un utilisateur clique touche d'envoi dans un client (en utilisant SMPT bien sûr) je veux annuler l'opération d'envoi et d'ajouter des trucs personnalisés aux pièces jointes de courrier électronique (le cas échéant) et le corpsC# annuler un envoi d'e-mail à l'aide de smtpClient

EDIT:

Ici, il va ce que je voudrais réaliser: Quand un utilisateur clique sur le bouton d'envoi en utilisant, disons l'application Mail de Windows 10, je ne veux pas que le courrier soit réellement envoyé, je veux juste annuler l'opération d'envoi, modifier le message électronique (corps, pièces jointes), et seulement alors sendit

+5

Avez-vous essayé quelque chose? –

+3

[so] n'est * pas * un service d'écriture de code libre. Vous devez essayer ** d'écrire le code vous-même **. Après [faire plus de recherche] (http://meta.stackoverflow.com/questions/261592) si vous avez un problème, vous pouvez ** poster ce que vous avez essayé ** avec ** une explication claire de ce qui ne fonctionne pas ** et fournissant un ** [mcve] **. Je suggère de lire [poser] une bonne question et [la question parfaite] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). Aussi, assurez-vous de prendre le [tour]. – Igor

+2

Essayez d'utiliser la programmation pour le faire –

Répondre

1

Tout à fait sans ambage, cela a XY problem écrit partout.

Une fois que vous appelez Send, il n'y a aucun mécanisme pour annuler le message - la classe ne déclenche aucun événement avant d'envoyer l'e-mail ou quoi que ce soit, elle l'envoie seulement. Assurez-vous simplement que vous êtes prêt à envoyer le message avant de l'envoyer.

Le cas d'utilisation réel pour cela est assez petit de toute façon; supposons, juste pour l'argument, que l'opération Send prend 2 secondes (et il pourrait facilement prendre beaucoup moins); quelles sont les chances que quelqu'un change d'avis (ou soit capable d'agir assez rapidement pour l'empêcher de sortir) dans ces 2 secondes? Vous feriez mieux de compiler entièrement le message électronique et de l'envoyer (plutôt que d'appeler le Send, de l'annuler, de le terminer et de l'envoyer à nouveau).

TL; DR Vous ne pouvez pas, ne devrait pas, et ne pas besoin d'annuler l'opération Send - juste ne démarre pas jusqu'à ce que vous savez que vous êtes prêt.