Comment envoyer un email de jsp / servlet? Est-il nécessaire de télécharger des pots ou pouvez-vous envoyer un email de jsp / servlets sans pots? P>
Que ressemblerait mon code Java? P> Li>
Quel serait mon code HTML (le cas échéant)? P> LI>
sont des classes multiples nécessaires, ou pouvez-vous utiliser une seule classe? p> li> ul>
4 Réponses :
Vous pouvez envoyer un courrier à partir de jsp ou de servlet lorsque nous envoyons du fichier de classe à l'aide de l'API Java Mail. Voici un lien qui vous aidera à vous aider à: p>
http://www.java-samples.com/showttudial.php ? TutorialID = 675 p>
J'utilise un package JavaMail et cela fonctionne très bien. Les échantillons indiqués ci-dessus sont bons mais comme je peux voir qu'ils n'ont pas défini les paramètres dans un fichier externe (par exemple web.xml) qui est recommandé ...
Imaginez que vous souhaitez modifier votre adresse e-mail ou votre hôte SMTP. Il est beaucoup plus facile de modifier le fichier web.xml de 10 servlets où vous avez utilisé la fonction de courrier. Par exemple, ajoutez des lignes suivantes dans web.xml p> alors vous pouvez accéder à ces paramètres de servlet avec p>
La logique de logiciel de messagerie doit aller dans sa propre classe autonome que vous pouvez réutiliser partout. Le fichier JSP doit contenir la logique de présentation et d'annotation uniquement. La classe Servlet doit simplement traiter la demande de la manière appropriée et appeler la classe Mailer. Voici les étapes que vous devez prendre:
Tout d'abord décider qui que vous souhaitez utiliser pour que vous serait en mesure d'envoyer des e-mails. Celui de votre fournisseur d'accès Internet? L'un de Gmail? Yahoo? fournisseur d'hébergement site? Un auto-entretenu une? Quelle que soit, figure le nom d'hôte, le port, le nom d'utilisateur et mot de passe de ce serveur SMTP. Vous allez avoir besoin de ces informations. P>
Créer une classe Java qui utilise vanilles API JavaMail a> pour envoyer un message. L'API JavaMail est livré avec un excellent tutoriel et FAQ . Nom de la classe Maintenant, la partie JSP, il est pas tout à fait clair pourquoi vous avez mentionné JSP, mais depuis une page JSP est supposés pour ne représenter que HTML, je parie que vous aimeriez avoir quelque chose comme un formulaire de contact dans une JSP. Voici un exemple de coup d'envoi: p>
Maintenant, créer une classe servlet qui écoute sur une Mailer code> et lui donner un
send () code> (ou tout ce que vous voulez). Testez à l'aide d'une classe de testeur avec un
principal () code> comme ceci: p>
public class ContactServlet extends HttpServlet {
private Mailer mailer;
private String to;
public void init() {
// Create mailer. You could eventually obtain the settings as
// web.xml init parameters or from some properties file.
String hostname = "smtp.example.com";
int port = 2525;
String username = "nobody";
String password = "forgetit";
this.mailer = new Mailer(hostname, port, username, password);
this.to = "you@example.com";
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String email = request.getParameter("email");
String subject = request.getParameter("subject");
String message = request.getParameter("message");
// Do some validations and then send mail:
try {
mailer.send(email, to, subject, message);
request.setAttribute("message", "Mail succesfully sent!");
request.getRequestDispatcher("/WEB-INF/contact.jsp").forward(request, response);
} catch (MailException e) {
throw new ServletException("Mailer failed", e);
}
}
}
<form action="contact" method="post">
<p>Your email address: <input name="email"></p>
<p>Mail subject: <input name="subject"></p>
<p>Mail message: <textarea name="message"></textarea></p>
<p><input type="submit"><span class="message">${message}</span></p>
</form>
url-pattern code> de
/ contact code> (la même que la forme soumet à) et mettre en œuvre le doPost () méthode code> (le même procédé que le formulaire est utilise) comme suit: p>
public class TestMail {
public static void main(String... args) throws Exception {
// Create mailer.
String hostname = "smtp.example.com";
int port = 2525;
String username = "nobody";
String password = "idonttellyou";
Mailer mailer = new Mailer(hostname, port, username, password);
// Send mail.
String from = "john.doe@example.com";
String to = "jane.doe@example.com";
String subject = "Interesting news";
String message = "I've got JavaMail to work!";
mailer.send(from, to, subject, message);
}
}
L'API Javamail regorge d'appels de méthode statiques qui rendra votre code difficile à tester. Si vous avez la possibilité d'utiliser le ressort, consultez l'API de messagerie ( static.springsource.org/spring/docs/3.0.x/... ).
On dirait que votre envoi (de, à, le sujet, le message) est un peu différent de oracle.com/webolder/techNetwork/Tutorials/obe/java/javamail / ... (méthode sendmail).
À quoi ressemblait votre envoi de votre courrier?
Le message est envoyé à partir de notre propre serveur de messagerie? Comme, je vais chez mon gmail, composez une lettre et envoyez-la à moi-même ... c'est l'équivalent. Est-ce bon, @Ballusc?
JSP Page:
package Email; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail { public void SendingEmail(String Email,String Body) throws AddressException, MessagingException { String host ="smtp.gmail.com"; String from ="yourMailId"; //Your mail id String pass ="yourPassword"; // Your Password Properties props = System.getProperties(); props.put("mail.smtp.starttls.enable", "true"); // added this line props.put("mail.smtp.host", host); props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "25"); props.put("mail.smtp.auth", "true"); String[] to = {Email}; // To Email address Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); InternetAddress[] toAddress = new InternetAddress[to.length]; // To get the array of addresses for( int i=0; i < to.length; i++ ) { // changed from a while loop toAddress[i] = new InternetAddress(to[i]); } System.out.println(Message.RecipientType.TO); for( int j=0; j < toAddress.length; j++) { // changed from a while loop message.addRecipient(Message.RecipientType.TO, toAddress[j]); } message.setSubject("Email from SciArchives"); message.setContent(Body,"text/html"); Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } }
Veuillez vous plaire à Google pour de telles questions triviales avant de poster. Les liens ci-dessous font partie des dix premiers résultats.
Google est liée aux résultats populaires. Les gens utilisent Stackoverflow pour obtenir une opinion réelle des personnes par opposition aux algorithmes de vue de la montagne. C'est tout le point de Stackoverflow IMHO.
Obtenir Meta, c'est le point du système de points. Bon Q / A Obtient plus de points, montre plus de recherches, etc ... mais oui, meilleurs résultats (espérons-le). idée similaire au rang de page, tho.
@Nitheshchandra Google m'a amené ici;)
@CRM Les choses ont changé en 4 ans. Stackoverflow est devenu la source faisant autorité pour la plupart des problèmes de programmation, donc je ne pense pas que mon commentaire précédent s'applique toujours.