IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

recuperer les pieces jointes d'un mail


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut recuperer les pieces jointes d'un mail
    Bonjour,

    je cherche un moyen (autre que de decripter la source que renvoie le serveur pop3) pour recuperer les pieces jointes d'un mail recu par le serveur pop3 sans utiliser de librairies payantes.

    je me suis penché sur la librairie System.Net ou System.Web, donc si vous pouvez me conseiller ca fais 3 jours que je cherche.


    merci d'avance.

  2. #2
    Membre éprouvé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Points : 1 215
    Points
    1 215
    Par défaut
    Salut,

    Sauf erreur de ma part, il me semble que microsoft n'a pas inclu de libraire avec un client pop.

    La librairie System.Net.Mail permet d'avoir un client smpt uniquement.

    Mais arrive tu déjà a récupérer tes mails ? Si oui la librairie que tu utilise te propose peut être déjà cette fonctionnalité. Si non, et bien tu trouvera sûrement des librairies gratuites sur le net. Essaye de taper dans google "Client pop c#" tu trouvera peut être ton bonheur.

  3. #3
    Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    j'arrive à recuperer le mail par une requête au serveur pop3 mail il est brute de forme, mais je viens de trouver un bout de code grace a toi (merci):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    using System;
    using System.Net.Sockets;
    using System.IO;
    using System.Collections;
    using System.Text.RegularExpressions;
    using System.Text;
     
    namespace WindowsApplication1
    {
    	/// <summary>
    	/// Summary description for JointPiece.
    	/// </summary>
    	public class JoinPiece
    	{
    		// VARIABLES
    		ArrayList brutPieceJoin;
    		ArrayList header;
    		ArrayList codedData;
    		ArrayList decodedData;
    		string filename;
    		string encoding;
    		string localDirectory;
     
    		// CONSTRUCTEURS
    		public JoinPiece( )
    		{	
    			this.header = new ArrayList();
    			this.codedData = new ArrayList();
    			this.decodedData = new ArrayList();
    			this.brutPieceJoin = new ArrayList();	
     
    		}
     
    		// METHODES
    		public void GetData( ArrayList brutData )
    		{
    			this.brutPieceJoin = brutData;
    			Regex regEx = new Regex("filename=.*$");
    			Regex regExCoding = new Regex("^Content-Transfer-Encoding:", RegexOptions.IgnoreCase);
    			Regex regExFile = new Regex(@"[^?]+\?[^?]+?.*", RegexOptions.IgnoreCase);
    			ArrayList pointeur;
    			pointeur = header;
    			string filename;
     
    			foreach( string line in this.brutPieceJoin )
    			{
    				// Recuperation du codage du contenu
    				if( (pointeur == header) && (regExCoding.IsMatch(line) ) )
    					this.encoding = line.Substring( "Content-Transfer-Encoding:".Length ).Trim();
     
     
    				// Passage à la sauvegarde du contenu codé
    				if( line.Equals( "" ) )
    				{
    					pointeur = this.codedData;
    					continue;
    				}
     
    				if( regEx.IsMatch( line ) && (this.filename == null) )
    				{					
    					filename = regEx.Match( line ).Captures[0].ToString();				
    					filename = filename.Replace("filename=\"", "");
    					this.filename = filename.Replace("\"", "");
    				}
                    pointeur.Add( line );
    			}
    		}
     
    		public static string base64Decode(string data)
    		{
    			System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();  
    			System.Text.Decoder utf8Decode = encoder.GetDecoder();
     
    			byte[] todecode_byte = Convert.FromBase64String(data);
    			int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);    
    			char[] decoded_char = new char[charCount];
    			utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);                   
    			string result = new String(decoded_char);
    			return result;
    		}
     
    		public void Export( string localDirectory )
    		{
    			byte[] bytes;
    			StreamWriter str;
    			BinaryWriter bWr;
     
    			if( codedData.Count == 0 )
    				return;
     
    			if( this.filename == null )
    				throw new Exception("Nom de fichier de la pièce jointe introuvable");
    			if( this.filename.ToString().Equals("") )
    				throw new Exception("Nom de fichier de la pièce jointe introuvable");
     
    			str = new StreamWriter( localDirectory + Path.DirectorySeparatorChar + this.filename );						
     
    			if( encoding.ToLower() == "base64")
    			{
    				bWr = new BinaryWriter( str.BaseStream );
     
    				foreach( string line in codedData)
    				{				
    					bytes = Convert.FromBase64String( line );
    					bWr.Write( bytes );
    				}								
    			}
    			else
    			{
    				foreach( string line in codedData)
    				{
    					str.Write( line);
    				}
    			}
    			str.Close();
    		}
    	}
    }
    je pense que ca a l'air correct mais est ce qu'il ya mieux?

  4. #4
    Membre éprouvé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Points : 1 215
    Points
    1 215
    Par défaut
    Ah ba du coup tu décode la source que renvoie le serveur

    Est-ce qu'il y a mieux ? On peut toujours faire mieux ^^

    Non sérieusement sa m'a l'air correct mais je ne m'y connait plus assez pour dire ce qu'il faut améliorer lol. J'ai commencé le C# il y a peu et donc là et bien... lol alors je préfère me taire plutôt que de raconter des bétises ...

    C'est juste que j'avais commencé des recherches là-dessus car on a un client smtp mais pas pop...

    Voilà et bien sinon tant mieux si j'ai pu t'aider un petit peu ( ) et sinon et bien tant pis .

    Et bon courage pour la suite

Discussions similaires

  1. [OL-2010] enregistrer les piece jointe sans ouvrir le mail dont je suis en coupie
    Par nassiri dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 10/11/2013, 15h16
  2. Réponses: 0
    Dernier message: 23/04/2012, 17h55
  3. [Indy] Comment récupérer les pièces jointes d'un mail ?
    Par dj_lil dans le forum Web & réseau
    Réponses: 6
    Dernier message: 01/04/2011, 19h07
  4. Réponses: 0
    Dernier message: 23/06/2010, 10h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo