有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用servlet在JSP中发送邮件

我需要的邮件程序,必须与所有类型的主机发送。我使用过smtp,但它只支持gmail。在我的项目中,邮件必须通过公司登录发送。可能有很多公司登录,他们可能有不同类型的邮件帐户。。。我必须编写一个程序来支持所有类型的邮件帐户

package com.admin;

/**
 *
 * @author asp.net
 */
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * A utility class for sending e-mail messages
 * @author www.codejava.net
 *
 */
public class EmailUtility {
    public static void sendEmail(String host, String port,
            final String userName, final String password, String toAddress,
            String subject, String message) throws AddressException,
            MessagingException {

        // sets SMTP server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.transport.protocol", "smtp") ;

        // creates a new session with an authenticator
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName, password);
            }
        };

        Session session = Session.getInstance(properties, auth);

        // creates a new e-mail message
        Message msg = new MimeMessage(session);

        msg.setFrom(new InternetAddress(userName));
        InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
        msg.setRecipients(Message.RecipientType.TO, toAddresses);
        msg.setSubject(subject);
        msg.setSentDate(new Date());
        msg.setText(message);

        // sends the e-mail
        Transport.send(msg);

    }
}

共 (1) 个答案

  1. # 1 楼答案

    下面是令人惊叹的代码。我已经在Centos 6上测试过了

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Properties;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    
    @WebServlet(name = "SendMail", urlPatterns = {"/SendMail"})
    public class SendMail extends HttpServlet {
    
        public final String from = "from@gmail.com";
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
              // Recipient's email ID needs to be mentioned.
          String to = "to@gmail.com";
         // Sender's email ID needs to be mentioned
    
    
          // Assuming you are sending email from localhost
          String host = "smtp.gmail.com";
    
          // Get system properties
            Properties properties = System.getProperties();
    
          // Setup mail server
        //  properties.setProperty("mail.smtp.host", host);
    
    
                    properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.starttls.enable", "true");
            properties.put("mail.smtp.host", "smtp.gmail.com");
    
            properties.put("mail.smtp.port", "587");
    
          // Get the default Session object. 
                    Session session ;
    
                    session = Session.getInstance(properties,
                    new javax.mail.Authenticator() {
    
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(from, "password");
                        }
                    });
    
            session.setDebug(true);
    
    
          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();
          }
        }
    
    
    
    }
    

    这是一个servlet,您可以将此代码更改为类,如果您想要,您不能将文件传递给该类的函数