简体   繁体   中英

problem in sending mail in Java

two exception comes in my program.......

  1. cannot connect to the localhost ,port 25

  2. connection refused

code of mail.java is ---

package jMail;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class Mail {

    private String to;
    private String from;
    private String message;
    private String subject;
    private String smtpServ;

    public String getTo() {
        return to;
    }

    public void setTo(String to) {
        this.to = to;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getSmtpServ() {
        return smtpServ;
    }

    public void setSmtpServ(String smtpServ) {
        this.smtpServ = smtpServ;
    }

    public Exception sendMail(){
        try
        {
            Properties props = System.getProperties();
              // -- Attaching to default Session, or we could start a new one --
              props.put("mail.transport.protocol", "smtp");
              props.put("mail.smtp.starttls.enable","true");
              props.put("mail.smtp.host","localhost");
              props.put("mail.smtp.auth", "true");
              Authenticator auth = new SMTPAuthenticator();
              Session session = Session.getInstance(props, auth);
              // -- Create a new message --
              Message msg = new MimeMessage(session);
              // -- Set the FROM and TO fields --
              msg.setFrom(new InternetAddress(from));
              msg.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(to, false));
              // -- We could include CC recipients too --
              // if (cc != null)
              // msg.setRecipients(Message.RecipientType.CC
              // ,InternetAddress.parse(cc, false));
              // -- Set the subject and body text --
              msg.setSubject(subject);
              msg.setText(message);
              // -- Set some other header information --
              msg.setHeader("MyMail", "Java Mail Test");
              msg.setSentDate(new Date());
              // -- Send the message --
              Transport.send(msg);
              System.out.println("Message sent to"+to+" OK.");
              return null;
        }
        catch (Exception ex)
        {
          ex.printStackTrace();
          System.out.println("Exception "+ex);
          return ex;
        }
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator {
        @Override
        public PasswordAuthentication getPasswordAuthentication() {
            String username = "Java.Mail.CA@gmail.com";
            String password = "javamail";
            return new PasswordAuthentication(username, password);
        }
    }
}

so please tell me what to do & why these exception arises & how can i can mail using the java & localhost as host. ....................... thanks in advance.

Just follow this code; it is really useful to send email into java desktop and it works.

import java.util.*;
import javax.activation.CommandMap;
import javax.activation.MailcapCommandMap;
import javax.mail.*;
import javax.mail.Provider;


import javax.mail.internet.*; 
public class Main
{
    public static void main(String[] args)
    {
        final String username = "your@gmail.com";
        final String password = "password";
        Properties prop = new Properties();
        prop.put("mail.smtp.auth", "true");
        prop.put("mail.smtp.host", "smtp.gmail.com");
        prop.put("mail.smtp.port", "587");
        prop.put("mail.smtp.starttls.enable", "true");
        Session session = Session.getDefaultInstance(prop, new javax.mail.Authenticator()
        {
            protected PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(username, password);
            }
        });
        try
        {
            String body = "Dear Renish Khunt Welcome";
            String htmlBody = "<strong>This is an HTML Message</strong>";
            String textBody = "This is a Text Message.";
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("your@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("receiver@gmail.com"));
            message.setSubject("Testing Subject");
            MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
            mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
            mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
            mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
            mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
            mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
            CommandMap.setDefaultCommandMap(mc);
            message.setText(htmlBody);
            message.setContent(textBody, "text/html");
            Transport.send(message);
            System.out.println("Done");
        }
        catch (MessagingException e)
        {
            e.printStackTrace();
        }
    }
}

Here is the code snippet to send email.

try {
        String host = "yourHostName";
        String from = "test@test.com";
        String to[] = {"test123@test123.com"};
        String subject = "Test";

        String message = "Test";

        Properties prop = System.getProperties();
        prop.put("mail.smtp.host", host);
        Session sess1 = Session.getInstance(prop, null);
        MimeMessage msg = new MimeMessage(sess1);
        msg.setFrom(new InternetAddress(from));
        InternetAddress[] toAddress = new InternetAddress[to.length];
        for (int i = 0; i < to.length; i++) {
            toAddress[i] = new InternetAddress(to[i]);
        }
        msg.setRecipients(Message.RecipientType.TO, toAddress);
        msg.setSubject(subject);

        //Fill the message
        msg.setText(message);
        Transport.send(msg);
    } catch (MessagingException me) {
        me.printStackTrace();
    }

What exceptions are you getting while sending emails? Are you sure your SMTP server is listening at default port 25? Are you able to manually send the email via Telnet? Also, turn off any firewall while testing this just to be sure.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM