sending mail from apache tomcat

后端 未结 3 551
梦毁少年i
梦毁少年i 2021-01-05 07:35

I am working on a web project using Tomcat 6 as my webserver and JSP as frontend. I want to send a mail from the web server to an email account. How can I achieve this?

相关标签:
3条回答
  • 2021-01-05 07:58

    This works fine (gmail example) :

    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    public class SendMail {
    
        public static void main(String[] args) {
    
            final String username = "your_usename_goes_here";
            final String password = "your_password_goes_here";
    
            Properties props = new Properties();
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.port", "587");
    
            Session session = Session.getInstance(props,
              new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
              });
    
            try {
    
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress("fromSomeone@gmail.com"));
                message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("toSomeone@gmail.com"));
                message.setSubject("A testing mail header !!!");
                message.setText("Dear Mail Crawler,"
                    + "\n\n No spam to my email, please!");
    
                Transport.send(message);
    
                System.out.println("Done");
    
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-05 08:02

    Using Java-Mail API.

    • Take required inputs from JSP,
    • Post it to Servlet
    • Invoke service method to send Mail from Servlet
    • Use Java Mail API to send mails from service method, a quick example
    0 讨论(0)
  • 2021-01-05 08:12

    This is simplest way, using MailToURLConnection. No additional libraries needed.

    public static void sendMail(String from, String to, String subject, String body, String[] headers) throws IOException {
       System.setProperty("mail.host", "localhost");
    
       URL u = new URL("mailto:"+to);
       MailToURLConnection con = (MailToURLConnection)u.openConnection();
       OutputStream os = con.getOutputStream();
       OutputStreamWriter w = new OutputStreamWriter(os);
    
       DateFormat df = new SimpleDateFormat("E, d MMM yyyy H:mm:ss Z");
       Date d = new Date();
       String dt = df.format(d);
       String mid = d.getTime()+from.substring(from.indexOf('@'));
    
       w.append("Subject: "+subject+"\r\n");
       w.append("Date: " +dt+ "\r\n");
       w.append("Message-ID: <"+mid+ ">\r\n");
       w.append("From: "+from+"\r\n");
       w.append("To: <"+to+">\r\n");
       if(headers!=null) {
          for(String h: headers)
             w.append(h).append("\r\n");
       }
       w.append("\r\n");
    
       w.append(body.replace("\n", "\r\n"));
       w.flush();
       w.close();
       os.close();
       con.close();
    }
    
    0 讨论(0)
提交回复
热议问题