Comment faire pour configurer l'environnement d'utilisation JavaMail?
J'ai besoin d'envoyer html simple message avec JavaMail. Et quand j'ai essayé de trouver quelques beaux exemples avec des explications sur l'Internet, chaque exemple suivant, on m'a fait encore plus en colère et la colère.
Tous ceux idiot exemples contiennent copié et collé le code Java qui ne diffère que dans les commentaires et un joli avertissement que vous devez d'abord vos config smtp et pop3 server.
Je comprends que personne ne veut faire un faire de la publicité pour certains produits en béton, mais la configuration du serveur est à mon humble avis la partie la plus difficile. Donc, quelqu'un peut-il me donner quelques informations vraiment utiles (sans code java) sur la configuration de béton serveur (Kerio, par exemple, ou d'un autre)?
Ce que j'ai maintenant c'est l'exception suivante:
250 2.0.0 Reset state
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Relaying to <mymail@mycompany.com> denied (authentication required)
UPD. Simple reformulation de l'ensemble du texte précédent: imagine que vous avez Windows, jdk, et rien d'autre. Et vous voulez faire un programme en java et l'exécuter sur votre machine. Et ce programme devrait envoyer "Hello world!" à votre compte gmail. Liste de vos étapes.
UPD2. Voici le code:
Properties props = new Properties ();
props.setProperty ("mail.transport.protocol", "smtp");
props.setProperty ("mail.host", "smtp.gmail.com");
props.setProperty ("mail.user", "[email protected]");
props.setProperty ("mail.password", "password_from_email_above");
Session mailSession = Session.getDefaultInstance (props, null);
mailSession.setDebug (true);
Transport transport = mailSession.getTransport ();
MimeMessage message = new MimeMessage (mailSession);
message.setSubject ("HTML mail with images");
message.setFrom (new InternetAddress ("[email protected]"));
message.setContent ("<h1>Hello world</h1>", "text/html");
message.addRecipient (Message.RecipientType.TO,
new InternetAddress ("[email protected]"));
transport.connect ();
transport.sendMessage (message,
message.getRecipients (Message.RecipientType.TO));
Et l'exception est la suivante:
RSET
250 2.1.5 Flushed 3sm23455365fge.10
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 3sm23455365fge.10
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886)
at com.teamdev.imgmail.MailSender.main(MailSender.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
...
Smotricz: j'ai ajouté UPD section.
La mise à jour est un bien meilleure question. Pour cela, il s'avère que vous n'avez même pas besoin d'un serveur SMTP de votre propre, que Google arrive à être l'exploitation d'un assez gros pour vous.
Ma réponse mis à jour.
OriginalL'auteur Roman | 2009-12-22
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la recherche d'un tutoriel pour configurer un serveur SMTP, vous ne devriez pas être à la recherche pour JavaMail. Il suffit de regarder pour un tutoriel sur votre serveur de son choix (Kerio, par exemple ... ou Exim, SendMail, Apache James, Postfix) ou demander sur Serverfault. SMTP-serveur compatible jouer gentiment avec JavaMail.
Alternativement, vous pouvez même l'utiliser tout "standard" du fournisseur de messagerie de l'infrastructure. Par exemple, j'utilise un Google Apps compte avec Google SMTP de l'infrastructure pour envoyer du courrier à partir de nos applications Java. À l'aide d'un compte Gmail est un bon point de départ de toute façon si vous ne voulez pas configurer votre propre serveur SMTP pour simplement tester JavaMail.
Comme une dernière option, vous pouvez même la recherche de la Les Enregistrements MX pour un domaine et de livrer vos mails directement sur le serveur SMTP du destinataire. Il y a quelques pièges courants à la solution de contournement difficile.
Comme un dernier point, vous aurez à examiner comment éviter que vos e-mails être filtré comme spam - ce qui est un énorme sujet lui-même. Ici, il contribue à s'appuient sur les fournisseurs de s'attaquer à certains des problèmes que vous pourriez rencontrer lors de l'hébergement de votre propre serveur.
Btw: en ce qui Concerne le message d'erreur que vous avez posté: le serveur SMTP est nier le relais de messages. C'est si votre serveur SMTP (pense qu'il) est en cours d'exécution sur example.com et vous êtes d'origine [email protected] pour [email protected], vous demandez au serveur SMTP d'agir comme un relais. C'était une pratique courante il y a plusieurs années, jusqu'à ce qu'il est - vous l'aurez deviné - par les spammeurs. Depuis ces jours, les maîtres de poste sont encouragés à refuser le relais. Vous avez deux choix: s'authentifier avant d'envoyer un courriel ou envoyez les comptes hébergés sur votre serveur (c'est à dire sur example.com, par exemple [email protected]).
Edit:
Voici un peu de code pour vous aider à démarrer avec authenticationg (fonctionne avec les comptes Gmail mais ils doivent le faire pour votre propre serveur)
OriginalL'auteur sfussenegger
Un exemple de travail en combinant les réponses ci-dessus, à l'aide de activation-1.1.jar et mail-1.4.1.jar et l'ordinateur hôte SMTP est Gmail.
Remplacer
[email protected]
etuser_pw
en lignereturn new PasswordAuthentication("[email protected]", "user_pw");
Aussi, vous voulez remplacer
[email protected]
par l'adresse e-mail où vous souhaitez recevoir les e-mail.OriginalL'auteur Adrien Be
Je peut voir une partie de votre problème. Il est expliquée de manière adéquate dans le message d'erreur.
Le serveur SMTP d'envoi de votre courrier (par exemple, l'une des adresses que vous avez configuré dans votre JavaMail configuration) est en refusant de transférer le courrier à
[email protected]
. Ressemble à un problème de configuration de votre serveur SMTP. Comme sfussenegger indiqué, il n'a rien à voir avec javamail.De sorte que vous n'êtes pas le débogage sur tous les fronts en même temps, il pourrait être une bonne idée d'essayer de résoudre votre serveur SMTP d'un travail de client SMTP. Thunderbird, ferait l'affaire, par exemple. Si vous pouvez envoyer un mail par le biais de Thunderbird, il devrait y avoir peu de problème de JavaMail.
Mise à jour:
La bonne adresse pour Google serveur SMTP est:
smtp.gmail.com
. Est-ce le serveur que vous avez configuré dans JavaMail? Pouvez-vous nous montrer la correspondance de message d'erreur?OriginalL'auteur Carl Smotricz
Cela devrait fonctionner:
Vous avez besoin de mettre la JavaMail mail.jar sur votre chemin de la javax.mail dépendances.
Je ne sais pas si Google vous permet d'envoyer des e-mail comme vous le souhaitez. Pourquoi ne pas essayer un autre fournisseur de messagerie, comme votre fournisseur de services internet?
OriginalL'auteur Adriaan Koster