J'essaye d'envoyer un e-mail en utilisant Java:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendEmail {
public static void main(String [] args) {
// Recipient's email ID needs to be mentioned.
String to = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Now set the actual message
message.setText("This is actual message");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
J'obtiens l'erreur:
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
Ce code fonctionnera-t-il pour envoyer des e-mails?
Réponses:
Le code suivant fonctionne très bien avec le serveur SMTP de Google. Vous devez fournir votre nom d'utilisateur et votre mot de passe Google.
Mise à jour du 11 décembre 2015
Le nom d'utilisateur + mot de passe n'est plus une solution recommandée. Cela est dû à
Google avait publié l'API Gmail - https://developers.google.com/gmail/api/?hl=en . Nous devrions utiliser la méthode oAuth2, au lieu de nom d'utilisateur + mot de passe.
Voici l'extrait de code pour fonctionner avec l'API Gmail.
GoogleMail.java
Pour créer un service Gmail autorisé via oAuth2, voici l'extrait de code.
Utils.java
Pour fournir un moyen convivial d'authentification oAuth2, j'ai utilisé JavaFX, pour afficher la boîte de dialogue de saisie suivante
La clé pour afficher la boîte de dialogue oAuth2 conviviale se trouve dans MyAuthorizationCodeInstalledApp.java et SimpleSwingBrowser.java
la source
Send
place desend
mais c'est une classe utile. Avez-vous des idées sur les implications de sécurité du stockage du mot de passe Gmail dans le code?Le code suivant a fonctionné pour moi.
la source
Fichiers jar requis
Cliquez ici - Comment ajouter des pots externes
la source
La réponse courte - Non.
La réponse longue - non, car le code repose sur la présence d'un serveur SMTP fonctionnant sur la machine locale et écoutant sur le port 25. Le serveur SMTP (techniquement le MTA ou Mail Transfer Agent) est responsable de la communication avec l'agent utilisateur de messagerie (MUA, qui dans ce cas est le processus Java) pour recevoir les e-mails sortants.
Désormais, les agents MTA sont généralement chargés de recevoir les e-mails des utilisateurs d'un domaine particulier. Ainsi, pour le domaine gmail.com, ce sont les serveurs de messagerie de Google qui sont responsables de l'authentification des agents utilisateurs de messagerie et donc du transfert des mails vers les boîtes de réception sur les serveurs GMail. Je ne sais pas si GMail fait confiance aux serveurs de relais de messagerie ouverts, mais ce n'est certainement pas une tâche facile d'effectuer une authentification pour le compte de Google, puis de relayer le courrier vers les serveurs GMail.
Si vous lisez la FAQ JavaMail sur l'utilisation de JavaMail pour accéder à GMail , vous remarquerez que le nom d'hôte et le port pointent vers les serveurs GMail, et certainement pas vers localhost. Si vous avez l'intention d'utiliser votre machine locale, vous devrez effectuer un relais ou un transfert.
Vous aurez probablement besoin de comprendre le protocole SMTP en profondeur si vous avez l'intention d'aller n'importe où en matière de SMTP. Vous pouvez commencer par l'article de Wikipedia sur SMTP , mais tout progrès supplémentaire nécessitera en fait une programmation sur un serveur SMTP.
la source
Vous avez besoin d'un serveur SMTP pour envoyer des mails. Il existe des serveurs que vous pouvez installer localement sur votre propre ordinateur, ou vous pouvez utiliser l'un des nombreux serveurs en ligne. L'un des serveurs les plus connus est celui de Google:
Je viens de tester avec succès les configurations Google SMTP autorisées en utilisant le premier exemple de Simple Java Mail :
Notez les différents ports et stratégies de transport (qui gèrent toutes les propriétés nécessaires pour vous).
Curieusement, Google exige également TLS sur le port 25, même si les instructions de Google indiquent le contraire .
la source
Cela fait longtemps que cela n'a pas été publié. Mais depuis le 13 novembre 2012, je peux vérifier que le port 465 fonctionne toujours.
Reportez-vous à la réponse de GaryM sur ce forum . J'espère que cela aide quelques personnes de plus.
la source
Le code suivant fonctionne très bien, essayez ceci en tant qu'application java avec javamail-1.4.5.jar
la source
Eh bien, non, pas sans changer certaines parties puisque vous obtenez une erreur. Vous essayez actuellement d'envoyer du courrier via un serveur SMTP fonctionnant sur localhost mais vous n'en exécutez aucun, d'où le
ConnectException
.En supposant que le code est OK (je n'ai pas vraiment vérifié), vous devrez soit exécuter un serveur SMTP local, soit en utiliser un (distant) (de votre FAI).
Concernant le code, vous pouvez trouver des exemples dans le package de téléchargement JavaMail comme mentionné dans la FAQ :
la source
Essayez ceci. cela fonctionne bien pour moi. Assurez-vous qu'avant d'envoyer un e-mail, vous devez donner l'accès à une application moins sécurisée dans votre compte Gmail. Alors allez sur le lien suivant et essayez avec ce code java.
Activez Gmail pour une application moins sécurisée
Vous devez importer le fichier javax.mail.jar et le fichier activation.jar dans votre projet.
Ceci est le code complet pour envoyer un e-mail en java
la source
Voici la solution de travail bro. C'est garanti.
[email protected]
Ouvrez ce lien ci-dessous:
https://support.google.com/accounts/answer/6010255?hl=en
Voici mon code:
la source
J'ai mis ma classe de travail gmail java sur pastebin pour votre examen, prêtez une attention particulière à la méthode "startSessionWithTLS" et vous pourrez peut-être ajuster JavaMail pour fournir la même fonctionnalité. http://pastebin.com/VE8Mqkqp
la source
Votre code fonctionne, en dehors de la configuration de la connexion avec le serveur SMTP. Vous avez besoin d'un serveur de messagerie (SMTP) en cours d'exécution pour vous envoyer des e-mails.
Voici votre code modifié. J'ai commenté les parties qui ne sont pas nécessaires et j'ai changé la création de session pour qu'elle prenne un authentificateur. Maintenant, trouvez simplement le SMPT_HOSTNAME, USERNAME et PASSWORD que vous souhaitez utiliser (votre fournisseur Internet les fournit généralement).
Je le fais toujours comme ça (en utilisant un serveur SMTP distant que je connais) parce qu'exécuter un serveur de messagerie local n'est pas si simple sous Windows (c'est apparemment assez facile sous Linux).
la source
En effet, 465 fonctionne et l'exception que vous obtenez est peut-être due au port SMTP non ouvert 25. Par défaut, le numéro de port est 25. Pourtant, vous pouvez le configurer à l'aide de l'agent de messagerie disponible en open source - Mercury
Pour plus de simplicité, utilisez simplement la configuration suivante et tout ira bien.
Pour encore plus: consultez l'exemple de travail complet à partir de zéro ici
la source
J'ai la même exception que vous. La raison en est que le serveur smpt n'est pas opérationnel sur votre machine (puisque votre hôte est localhost). Si vous utilisez Windows 7, il n'a pas de serveur SMTP. vous devrez donc télécharger, installer et configurer avec le domaine et créer des comptes.J'ai utilisé hmailserver comme serveur smtp installé et configuré sur ma machine locale. https://www.hmailserver.com/download
la source
Vous pouvez trouver une classe java complète et très simple pour envoyer des e-mails en utilisant un compte Google (gmail) ici,
Envoyer un e-mail à l'aide d'un compte Java et Google
Il utilise les propriétés suivantes
la source