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

Java Discussion :

Erreur "non-static variable this cannot be referenced from a static context"


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut Erreur "non-static variable this cannot be referenced from a static context"
    Bonjour,

    Je travaille sur un projet WinDev Mobile 18 et je cherche à faire fonctionner un exemple d'envoi automatique d'emails.

    J'ai trouvé sur internet l'exemple : http://www.jondev.net/articles/Sendi...%29_in_Android

    Je tourne en rond avec des erreurs Java...

    Si je déclare la fonction snd avec static j'ai l'erreur :
    non-static variable this cannot be referenced from a static context
    Sinon l'objet m de la classe Mail est inconnu message :
    Cannot find symbol m.setTo(toArr);
    Voilà la liste des erreurs que j'ai :
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:211: error: non-static variable this cannot be referenced from a static context
    Mail m = new Mail("erreurlog@gmail.com", "XXXX");
    ^
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:215: error: cannot find symbol
    m.setTo(toArr);
    ^
    symbol: method setTo(String[])
    location: variable m of type GWDCPProceduresGlobales.Mail
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:217: error: cannot find symbol
    m.setFrom("erreurlog@gmail.com");
    ^
    symbol: method setFrom(String)
    location: variable m of type GWDCPProceduresGlobales.Mail
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:219: error: cannot find symbol
    m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device.");
    ^
    symbol: method setSubject(String)
    location: variable m of type GWDCPProceduresGlobales.Mail
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:230: error: cannot find symbol
    Toast.makeText(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show();
    ...
    Quelqu'un saurait-il m'indiquer comment résoudre ces problèmes ?

    Merci d'avance pour votre aide.

  2. #2
    Membre expert
    Avatar de MarieKisSlaJoue
    Homme Profil pro
    Ingénieur Cloud
    Inscrit en
    Mai 2012
    Messages
    1 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Ingénieur Cloud
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 145
    Points : 3 654
    Points
    3 654
    Billets dans le blog
    20
    Par défaut
    Bonjour, cette erreur interviens quand dans une fonction static tu utilises des variable qui ne sont pas static mais qui appartienne à une objet instancier.
    Pour régler ça. Soit tu passe tes variable utile en statique si c'est possible. Soit tu n'utilise pas de fonction static mais des fonction membre.

    Ton code est certainement mal conçu/découpé pour avoir ce genre d'erreur.
    Ce post à été écrit par un panda
    Apollo 11 - AGC revue de code
    -- qwerty keybord

  3. #3
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Il n'y a pas de fonction snd dans la page que tu as posté. Apres avoir jeté un oeil, le code qui englobe setTo sur le lien a l'air correct. Donc je dirais que c'est le code que tu as fait qui ne fonctionne pas. Peux tu le poster qu'on sache de quoi on parle ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci de vos réponse

    Je vous informe que ce n'est pas mon code

    Je l'avais trouvé sur internet d’après les utilisateurs ce code ça marche bien sur IDE de java Eclipse ou Androïde studio

    Moi je veux l'adapter pour marcher avec Windev Mobile 18 !

    en windev mobile si on veux utiliser un code java on le met dans une procédure globale

    donc ce que j'ai fais moi : création de deux procédure globales

    1- contient la déclaration et la classe Mail


    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    import java.util.Date; 
    import java.util.Properties; 
    import javax.activation.CommandMap; 
    import javax.activation.DataHandler; 
    import javax.activation.DataSource; 
    import javax.activation.FileDataSource; 
    import javax.activation.MailcapCommandMap; 
    import javax.mail.BodyPart; 
    import javax.mail.Multipart; 
    import javax.mail.PasswordAuthentication; 
    import javax.mail.Session; 
    import javax.mail.Transport; 
    import javax.mail.internet.InternetAddress; 
    import javax.mail.internet.MimeBodyPart; 
    import javax.mail.internet.MimeMessage; 
    import javax.mail.internet.MimeMultipart; 
    import javax.mail.*; 
     
     
    public static void Déclarations(){
    }
     
     
    public  static class Mail extends javax.mail.Authenticator { 
     
    	private String _user; 
    	private String _pass; 
     
    	private String[] _to; 
    	private String _from; 
     
    	private String _port; 
    	private String _sport; 
     
    	private String _host; 
     
    	private String _subject; 
    	private String _body; 
     
    	private boolean _auth; 
     
    	private boolean _debuggable; 
     
    	private Multipart _multipart; 
     
     
    	public Mail() { 
    		_host = "smtp.gmail.com"; // default smtp server 
    		_port = "465"; // default smtp port 
    		_sport = "465"; // default socketfactory port 
     
    		_user = ""; // username 
    		_pass = ""; // password 
    		_from = ""; // email sent from 
    		_subject = ""; // email subject 
    		_body = ""; // email body 
     
    		_debuggable = false; // debug mode on or off - default off 
    		_auth = true; // smtp authentication - default on 
     
    		_multipart = new MimeMultipart(); 
     
    		// There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. 
    		MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
    		mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
    		mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
    		mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
    		mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
    		mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
    		CommandMap.setDefaultCommandMap(mc); 
    	} 
     
    	public Mail(String user, String pass) { 
    		this(); 
     
    		_user = user; 
    		_pass = pass; 
    	} 
     
    	public boolean send() throws Exception { 
    		Properties props = _setProperties(); 
     
    		if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) { 
    			Session session = Session.getInstance(props, this); 
     
    			MimeMessage msg = new MimeMessage(session); 
     
    			msg.setFrom(new InternetAddress(_from)); 
     
    			InternetAddress[] addressTo = new InternetAddress[_to.length]; 
    			for (int i = 0; i < _to.length; i++) { 
    				addressTo[i] = new InternetAddress(_to[i]); 
    			} 
    			msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 
     
    			msg.setSubject(_subject); 
    			msg.setSentDate(new Date()); 
     
    			// setup message body 
    			BodyPart messageBodyPart = new MimeBodyPart(); 
    			messageBodyPart.setText(_body); 
    			_multipart.addBodyPart(messageBodyPart); 
     
    			// Put parts in message 
    			msg.setContent(_multipart); 
     
    			// send email 
    			Transport.send(msg); 
     
    			return true; 
    		} else { 
    			return false; 
    		} 
    	} 
     
    	public void addAttachment(String filename) throws Exception { 
    		BodyPart messageBodyPart = new MimeBodyPart(); 
    		DataSource source = new FileDataSource(filename); 
    		messageBodyPart.setDataHandler(new DataHandler(source)); 
    		messageBodyPart.setFileName(filename); 
     
    		_multipart.addBodyPart(messageBodyPart); 
    	} 
     
    	//@Override 
    	public PasswordAuthentication getPasswordAuthentication() { 
    		return new PasswordAuthentication(_user, _pass); 
    	} 
     
    	private Properties _setProperties() { 
    		Properties props = new Properties(); 
     
    		props.put("mail.smtp.host", _host); 
     
    		if(_debuggable) { 
    			props.put("mail.debug", "true"); 
    		} 
     
    		if(_auth) { 
    			props.put("mail.smtp.auth", "true"); 
    		} 
     
    		props.put("mail.smtp.port", _port); 
    		props.put("mail.smtp.socketFactory.port", _sport); 
    		props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    		props.put("mail.smtp.socketFactory.fallback", "false"); 
     
    		return props; 
    	} 
     
    	// the getters and setters 
    	public String getBody() { 
    		return _body; 
    	} 
     
    	public void setBody(String _body) { 
    		this._body = _body; 
    	} 
     
    	// more of the getters and setters ….. 
    }

    puis la 2 procédure globale :
    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
    public static void SendEmail()
     
    {
     
    Mail m = new Mail("gmailusername@gmail.com", "password"); 
     
    String[] toArr = {"bla@bla.com", "lala@lala.com"}; 
    m.setTo(toArr); 
    m.setFrom("wooo@wooo.com"); 
    m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device."); 
    m.setBody("Email body."); 
     
    try { 
    	m.addAttachment("/sdcard/filelocation"); 
     
    	if(m.send()) { 
    		Toast.makeText(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
    	} else { 
    		Toast.makeText(MailApp.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
    	} 
    } catch(Exception e) { 
    	//Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show(); 
    	Log.e("MailApp", "Could not send email", e); 
    } 
    }

    Quand on veux déployer APK du mon projet avec Windev mobile j'ajoute les rois bibliotéhques JAR : activation.JAR, additionnal.JAR et mail.JAR


    J'avais ce message d'erreur :

    Echec de la création de l'application Android <C:\Mes Projets Mobile\SendMail\Exe\SendMail.apk>.


    Ligne de commande : "C:\Program Files\Java\jdk1.8.0_25\bin\javac.exe" -encoding UTF-16LE -nowarn -source 1.5 -target 1.5 -d bin\classes -bootclasspath "C:\Android\android-sdk\platforms\android-22\android.jar" gen\com\masociete\sendmail\*.java src\com\masociete\sendmail\wdgen\*.java -classpath "libs;libs\activation.jar;libs\additionnal.jar;libs\mail.jar"


    Erreur retournée :
    Code console : 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
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:196: error: cannot find symbol
    m.setTo(toArr); 
     ^
      symbol:   method setTo(String[])
      location: variable m of type Mail
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:197: error: cannot find symbol
    m.setFrom("wooo@wooo.com"); 
     ^
      symbol:   method setFrom(String)
      location: variable m of type Mail
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:198: error: cannot find symbol
    m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device."); 
     ^
      symbol:   method setSubject(String)
      location: variable m of type Mail
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:205: error: cannot find symbol
    		Toast.makeText(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
    		               ^
      symbol:   class MailApp
      location: class GWDCPProceduresGlobales
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:205: error: cannot find symbol
    		Toast.makeText(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
    		                                                             ^
      symbol:   variable Toast
      location: class GWDCPProceduresGlobales
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:205: error: cannot find symbol
    		Toast.makeText(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
    		^
      symbol:   variable Toast
      location: class GWDCPProceduresGlobales
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:207: error: cannot find symbol
    		Toast.makeText(MailApp.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
    		               ^
      symbol:   class MailApp
      location: class GWDCPProceduresGlobales
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:207: error: cannot find symbol
    		Toast.makeText(MailApp.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
    		                                                    ^
      symbol:   variable Toast
      location: class GWDCPProceduresGlobales
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:207: error: cannot find symbol
    		Toast.makeText(MailApp.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
    		^
      symbol:   variable Toast
      location: class GWDCPProceduresGlobales
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:211: error: cannot find symbol
    	Log.e("MailApp", "Could not send email", e); 
    	^
      symbol:   variable Log
      location: class GWDCPProceduresGlobales
    10 errors

    ça fais une semaine que je tourne en rond

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Bonsoir. Il me semble que l'erreur indique que les fonctions setTo, setSubject, etc. ne sont pas définies... Ce qui est normal puisque je ne trouve leur définition nulle part dans le code de la classe Mail.

  6. #6
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par esired Voir le message
    Bonsoir. Il me semble que l'erreur indique que les fonctions setTo, setSubject, etc. ne sont pas définies... Ce qui est normal puisque je ne trouve leur définition nulle part dans le code de la classe Mail.
    Bonjour,

    Normalement quand je déploies L'APK j'ajoute les bibliothèques JAR , comment je peux ajouter ces bibliothèques sur le code JAVA stp directement ?

    Merci de votre réponse

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ca n'a rien a voir avec la présence d'un jar, le problème c'est que ton code appelle des méthodes que tu n'a pas écrite. Ces méthodes n'existent pas et donc je ne sais pas ce que tu imagine qu'elle devraient faire. Il faut que tu écrive ces méthodes setFrom/setTO etc dans ta classe Mail pour qu'elles existent....

  8. #8
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ca n'a rien a voir avec la présence d'un jar, le problème c'est que ton code appelle des méthodes que tu n'a pas écrite. Ces méthodes n'existent pas et donc je ne sais pas ce que tu imagine qu'elle devraient faire. Il faut que tu écrive ces méthodes setFrom/setTO etc dans ta classe Mail pour qu'elles existent....
    Ces méthodes doivent être existent dans la biblio Mail.JAR ?

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Non, les méthodes sont toujours dans des classes, pas dans des bibliothèques.

    Ajouter une bibliothèque ne changera rien du tout au fait que ta classe Mail n'a pas les méthodes déjà citées.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Non, les méthodes sont toujours dans des classes, pas dans des bibliothèques.

    Ajouter une bibliothèque ne changera rien du tout au fait que ta classe Mail n'a pas les méthodes déjà citées.
    Merci de votre réponse , je ne suis pas développeur java

    J'avais trouvé ce code ici : J'ai trouvé sur internet l'exemple :

    http://www.jondev.net/articles/Sendi...%29_in_Android

    d’après des utilisateurs ce code marche bien sur Eclipse ou bien Android studio ?

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben si tu ne développe pas tu va avoir beaucoup de mal à créer un application, c'est un peu le principe de base

    Y a pas à tortiller du croupion, ta classe Mail n'a pas de méthode setFrom, setCC et cie d'après le code que tu poste, et donc tu risque pas de pouvoir appeler ces méthodes depuis ta classe
    Quand à ton lien : "page not found", mais vu que dans le code il y a
    // more of the getters and setters …..
    Je suppose que l'auteur d'origine du code assume que tu as un minimum de connaissance en dev que pour écrire les getters/setter qu'il a pas envie de se tapper à écrire dans son exemple.

  12. #12
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ben si tu ne développe pas tu va avoir beaucoup de mal à créer un application, c'est un peu le principe de base

    Y a pas à tortiller du croupion, ta classe Mail n'a pas de méthode setFrom, setCC et cie d'après le code que tu poste, et donc tu risque pas de pouvoir appeler ces méthodes depuis ta classe
    Quand à ton lien : "page not found", mais vu que dans le code il y a Je suppose que l'auteur d'origine du code assume que tu as un minimum de connaissance en dev que pour écrire les getters/setter qu'il a pas envie de se tapper à écrire dans son exemple.
    Je développe actuellement avec Windev mobile , je connais les notions de la POO et je veux insérer ce code

    JAVA dans mon projet android faite avec windev


    Je ne sais pas pourquoi le lien est supprimé ?!

    voilà son code :
    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
     
    import java.util.Date; 
    import java.util.Properties; 
    import javax.activation.CommandMap; 
    import javax.activation.DataHandler; 
    import javax.activation.DataSource; 
    import javax.activation.FileDataSource; 
    import javax.activation.MailcapCommandMap; 
    import javax.mail.BodyPart; 
    import javax.mail.Multipart; 
    import javax.mail.PasswordAuthentication; 
    import javax.mail.Session; 
    import javax.mail.Transport; 
    import javax.mail.internet.InternetAddress; 
    import javax.mail.internet.MimeBodyPart; 
    import javax.mail.internet.MimeMessage; 
    import javax.mail.internet.MimeMultipart; 
     
     
    PUBLIC static void Déclarations(){
    }
     
     
    PUBLIC class Mail extends javax.mail.Authenticator { 
     
    PRIVATE string _user; 
    PRIVATE string _pass; 
     
    PRIVATE string[] _to; 
    PRIVATE string _from; 
     
    PRIVATE string _port; 
    PRIVATE string _sport; 
     
    PRIVATE string _host; 
     
    PRIVATE string _subject; 
    PRIVATE string _body; 
     
    PRIVATE boolean _auth; 
     
    PRIVATE boolean _debuggable; 
     
    PRIVATE Multipart _multipart; 
     
     
    PUBLIC Mail() { 
    _host = "smtp.gmail.com"; // default smtp server 
    _port = "465"; // default smtp port 
    _sport = "465"; // default socketfactory port 
     
    _user = ""; // username 
    _pass = ""; // password 
    _from = ""; // email sent from 
    _subject = ""; // email subject 
    _body = ""; // email body 
     
    _debuggable = False; // debug mode on or off - default off 
    _auth = True; // smtp authentication - default on 
     
    _multipart = new MimeMultipart(); 
     
    // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. 
    MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
    mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
    CommandMap.setDefaultCommandMap(mc); 
    } 
     
    PUBLIC Mail(string user, string pass) { 
    this(); 
     
    _user = user; 
    _pass = pass; 
    } 
     
    PUBLIC boolean send() throws EXCEPTION { 
    Properties props = _setProperties(); 
     
    IF(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) { 
    Session session = Session.getInstance(props, this); 
     
    MimeMessage msg = new MimeMessage(session); 
     
    msg.setFrom(new InternetAddress(_from)); 
     
    InternetAddress[] addressTo = new InternetAddress[_to.length]; 
    for (int i = 0; i < _to.length; i++) { 
    addressTo[i] = new InternetAddress(_to[i]); 
    } 
    msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 
     
    msg.setSubject(_subject); 
    msg.setSentDate(new Date()); 
     
    // setup message body 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    messageBodyPart.setText(_body); 
    _multipart.addBodyPart(messageBodyPart); 
     
    // Put parts in message 
    msg.setContent(_multipart); 
     
    // send email 
    Transport.send(msg); 
     
    RETURN True; 
    } ELSE { 
    RETURN False; 
    } 
    } 
     
    PUBLIC void addAttachment(string filename) throws EXCEPTION { 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    DataSource Source = new FileDataSource(filename); 
    messageBodyPart.setDataHandler(new DataHandler(Source)); 
    messageBodyPart.setFileName(filename); 
     
    _multipart.addBodyPart(messageBodyPart); 
    } 
     
    PUBLIC PasswordAuthentication getPasswordAuthentication() { 
    RETURN new PasswordAuthentication(_user, _pass); 
    } 
     
    PRIVATE Properties _setProperties() { 
    Properties props = new Properties(); 
     
    props.put("mail.smtp.host", _host); 
     
    IF(_debuggable) { 
    props.put("mail.debug", "true"); 
    } 
     
    IF(_auth) { 
    props.put("mail.smtp.auth", "true"); 
    } 
     
    props.put("mail.smtp.port", _port); 
    props.put("mail.smtp.socketFactory.port", _sport); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 
     
    RETURN props; 
    } 
     
    // the getters and setters 
    PUBLIC string getBody() { 
    RETURN _body; 
    } 
     
    PUBLIC void setBody(string _body) { 
    this._body = _body; 
    } 
     
     
    } 
     
     
    }
     
     
    Mail m = new Mail("erreurlog@gmail.com", "XXXX"); 
     
    string[] toArr = {"devwds@gmail.com", "xxxx@gmail.com"}; 
     
    m.setTo(toArr);
     
    m.setFrom("erreurlog@gmail.com"); 
     
    m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device."); 
     
    m.setBody("Email body."); 
     
    try { 
     
    m.addAttachment("/sdcard/filelocation"); 
     
     
    IF(m.send()) { 
    Toast.makeText(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
    } ELSE { 
    Toast.makeText(MailApp.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
    } 
    } catch(EXCEPTION e) { 
    //Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show(); 
    Log.e("MailApp", "Could not send email", e); 
    } 
    } 
    }); 
    }
    merci encore

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je ne connais pas windev, ni pourquoi tu te retrouve avec du java sous windev, mais concernant ton code java, on l'a dit et redit: il te manque des méthodes, il faut que tu les écrive.

  14. #14
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je ne connais pas windev, ni pourquoi tu te retrouve avec du java sous windev, mais concernant ton code java, on l'a dit et redit: il te manque des méthodes, il faut que tu les écrive.
    mais sur le net j'ai compris qu'un Fichier JAR java contient des packages et des classes :

    << Il est possible de créer une enveloppe qui va contenir tous les fichiers d'une application Java ou une portion de cette application dans un fichier .jar (Java archive). Ceci inclus : l'arborescence des packages, les fichiers .class, les fichiers de ressources (images, configuration, ...), ... Un fichier .jar est physiquement une archive de type Zip qui contient tous ces éléments. >>

    en Windev mobile il n y as pas comment faire l'envoie automatique des emails sans interaction de l'utilisateur

    J'essayeras d'jouter les fonctions qui manquent et t'informeras le lundi

    MErci et bonne journée

  15. #15
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je ne connais pas windev, ni pourquoi tu te retrouve avec du java sous windev, mais concernant ton code java, on l'a dit et redit: il te manque des méthodes, il faut que tu les écrive.
    Bonjour,
    J'ai ajouté les méthodes qui me manquent mais maintenant j'ai le message d'erreur suivant :

    Erreur retournée :
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:217: error: illegal start of expression
    static Mail m = new Mail("gmailusername@gmail.com","password");
    ^
    1 error

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Probablement, parce que tu as écrit cette ligne dans une méthode, et dans une méthode, une variable ne peut être static (ça n'a aucun sens) : enlève simplement ce mot.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Probablement, parce que tu as écrit cette ligne dans une méthode, et dans une méthode, une variable ne peut être static (ça n'a aucun sens) : enlève simplement ce mot.
    Bonjour,
    MErci de ta réponse
    si j'enleve le mot static pour le variable j'avais message :

    non-static variable this cannot be referenced from a static context
    m = new Mail("gmailusername@gmail.com","password");
    ^

    Aussi je declare la variable comme globale : public static Mail m ;

    et si je place les deux instructions en dehors de la méthode SendEmail

    public static Mail m ;

    m = new Mail("gmailusername@gmail.com","password");

    j'ai l'erreur :
    Erreur retournée :
    src\com\masociete\sendmail\wdgen\GWDCPProceduresGlobales.java:55: error: <identifier> expected
    m = new Mail("gmailusername@gmail.com","password");
    ^
    1 error

  18. #18
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faudrait nous donner plus qu'une ligne de code hors contexte. Par ailleurs, le message "non-static variable this cannot be referenced from a static context" concerne "this", pas "m", parce que quelque part, tu as une méthode static, dans laquelle tu as le mot clef this, qui n'a aucun sens dans une méthode statique.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #19
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Il faudrait nous donner plus qu'une ligne de code hors contexte. Par ailleurs, le message "non-static variable this cannot be referenced from a static context" concerne "this", pas "m", parce que quelque part, tu as une méthode static, dans laquelle tu as le mot clef this, qui n'a aucun sens dans une méthode statique.
    Oui j'avais des getters et setters qui utilise le mot This
    car dans windev mobile pour ajouter un code natif java on doit le faire avec une procédure static !

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est quoi le code dans le post 12 ? C'est du Windev mélangé avec du Java ? Où c'est censé être du Java ? Auquel cas, ça n'en est pas ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Non-static variable cannot be referenced from a static context
    Par otylio dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 23/11/2018, 15h42
  2. Réponses: 3
    Dernier message: 23/07/2015, 14h59
  3. Réponses: 4
    Dernier message: 12/02/2015, 10h27
  4. non-static method cannot be referenced from a static context
    Par Spawny123 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 04/03/2010, 21h38
  5. [FOP] [ERROR] non-static variable this cannot be referenced from a static context
    Par cash3000 dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/05/2006, 16h46

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