2017-07-19 4 views
1

Je travaille sur un problème à mon projet que lorsque je clique sur le bouton, un client de messagerie par défaut devrait sortir et s'il y a une pièce jointe, il devrait être automatiquement attaché à l'email par défaut client comme ça.Comment ouvrir le client de messagerie par défaut avec pièce jointe

enter image description here

Je l'ai déjà essayé beaucoup de méthodes comment faire cela. Tout d'abord je MAPI, mais le MAPI ne peut détecter le défaut client de messagerie, même si je l'ai déjà mis dans le Panneau de configuration, il montre cette case deux messages

enter image description here

enter image description here

Je l'ai déjà cherché sur internet à propos de ces erreurs, mais il n'y a pas de réponse précise ou claire à moi. HERE'S le code que j'ai utilisé dans MAPI.

J'ai également utilisé le protocole mail:to pour appeler le client de messagerie par défaut qui gère le protocole susmentionné en utilisant cette ligne de codes.

Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process() 

      Dim filename = Convert.toChar(34) & "C:\USERS\JOSHUA~1.HER\DOWNLO~1\ASDPOR~1.PDF" & Convert.toChar(34) 
      Debug.Writeline(filename) 
      Dim asd As String = String.Format("mailto:[email protected]?subject=hello&body=love my body&Attach={0}", filename) 
      proc.StartInfo.FileName = asd 
      proc.Start() 

Mais encore, pas de chance. J'ai lu un thread que le mail:to ne gère plus la pièce jointe, mais cette ligne de code a ouvert mon client de messagerie par défaut avec le corps et l'objet, mais il n'y a pas de pièce jointe. En termes de la variable filename, j'ai déjà essayé chaque format de chemin, j'ai lu que je devrais utiliser le format de chemin 8.3. Mais ne fonctionne toujours pas.

La dernière méthode que j'ai utilisée est l'extension System.Net.MailMessage.MailMessage() suite THIS réponse. Cela fonctionne en termes d'ouverture du client de messagerie par défaut et de pièce jointe à un mail, mais ce n'est pas modifiable et il n'y a pas de bouton d'envoi sur le client de messagerie par défaut car cette ligne de code génère un fichier .eml et l'ouvre. Je pense à l'analyse du fichier eml, mais je ne sais toujours pas comment ouvrir le client de messagerie par défaut de manière progmatique dans un nouveau formulaire de message. Voici la photo

enter image description here

gars vous avez une idée de comment rendre cela possible? Merci!

+0

Avez-vous essayé l'approche MAPI en utilisant un nouveau ThreadStart avec ApartmentState.STA? C'était la seule façon de faire en sorte que cela fonctionne pour moi. –

Répondre

0

Je crains que cela ne soit pas possible en utilisant une méthode générique pour n'importe quel client de messagerie. Mais vous pouvez facilement créer votre propre solution en utilisant System.Net.Mail.SmtpClient et une interface utilisateur personnalisée simple.

+0

Si je fais une interface utilisateur personnalisée, alors j'ai besoin de travailler avec le 'authkey' pour pouvoir connecter leur email personnel? – Rich

+0

Si vous souhaitez uniquement envoyer des messages électroniques, vous devez uniquement connaître les informations d'identification du serveur SMTP. Mais rappelez-vous que tout ce que vous envoyez en utilisant SmtpClient NE SERA PAS dans leur boîte aux lettres (il est envoyé par autre chose que leur client de messagerie). –

+0

Je veux que les utilisateurs envoient manuellement le message, je veux juste ouvrir leur client de courrier avec la pièce jointe étant choisie. En fait, la plupart du client de messagerie par défaut est 'Mail' dans Windows 10, car la plupart d'entre eux n'installent pas d'autres clients de messagerie, donc techniquement je veux être spécifique à cette application comment ouvrir un nouveau message avec la pièce jointe. Si je crée un client mail personnalisé, je pense que je devrai travailler sur 'authkey' dans Google, Yahoo, etc. pour pouvoir envoyer un email en utilisant leurs comptes. Qu'est-ce que tu penses? – Rich