Comment configurer un serveur de messagerie pour une utilisation avec JavaMail?


J'essaie de travailler avec le code ci-dessous:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;   // important
import javax.mail.event.*;      // important
import java.net.*;
import java.util.*;

public class servletmail extends HttpServlet {
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        response.setContentType("text/html");
        try {
            Properties props=new Properties();
            props.put("mail.smtp.host","localhost");   //  'localhost' for testing
            Session   session1  =  Session.getDefaultInstance(props,null);
            String s1 = request.getParameter("text1"); //sender (from)
            String s2 = request.getParameter("text2");
            String s3 = request.getParameter("text3");
            String s4 = request.getParameter("area1");
            Message message =new MimeMessage(session1);
            message.setFrom(new InternetAddress(s1));
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(s2,false));
            message.setSubject(s3);
            message.setText(s4);        
            Transport.send(message);
            out.println("mail has been sent");
        } catch(Exception ex) {
            System.out.println("ERROR....."+ex);
        }
    }
}

J'utilise le courrier.jar et de l'activation.pot. Mais je ne comprends pas comment je devrais le configurer avec un serveur de messagerie. Quel serveur de messagerie dois-je utiliser? Vais-je pouvoir envoyer un e-mail en utilisant le code ci-dessus? Quelles sont les exigences d'un serveur de messagerie? Comment dois-je le configurer?

Author: BalusC, 2010-06-02

1 answers

Pour commencer, vous avez besoin d'un serveur SMTP . Il est nécessaire de pouvoir envoyer des e-mails. De la même manière que vous avez besoin d'un serveur HTTP pour pouvoir servir un site Web. Vous avez apparemment déjà un serveur HTTP (avec un servletcontainer), mais vous n'avez pas encore de serveur SMTP configuré.

Vous pouvez utiliser le serveur SMTP associé à votre propre compte de messagerie existant, tel que celui de votre FAI ou des boîtes aux lettres publiques comme Gmail, Yahoo, etc. Vous pouvez trouver les détails de connexion SMTP dans leur documentation. Vous habituellement juste besoin de savoir l' nom d'hôte et le numéro de port. Les nom d'utilisateur/mot de passe sont identiques à ceux de votre compte de messagerie.

Le nom d'hôte et le numéro de port doivent ensuite être définis comme propriétés SMTP pour JavaMail:

Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "smtp.example.com"); // smtp.gmail.com?
properties.put("mail.smtp.port", "25");

Le nom d'utilisateur/mot de passe doit être utilisé dans un Authenticator comme suit:

properties.put("mail.smtp.auth", "true");
Authenticator authenticator = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("yourusername", "yourpassword");
    }
};

, Alors vous pouvez obtenir la session de messagerie comme suit:

Session session = Session.getDefaultInstance(properties, authenticator);

Avec le compte de votre FAI ou de vos boîtes aux lettres publiques, vous êtes cependant limité à l'utilisation de votre propre adresse dans le champ From de l'e-mail et généralement aussi dans le nombre d'e-mails que vous êtes autorisé à envoyer à certains intervalles. Si vous souhaitez contourner ce problème, vous devez installer votre propre serveur SMTP, par exemple Apache James, qui est basé sur Java, ou Microsoft Exchange, etc.

Après tout, je vous suggère de passer par un tutoriel JavaMail afin que vous puissiez mieux comprendre.

 24
Author: BalusC, 2017-06-06 16:12:28