javax.mail.MessagingException:无法连接到SMTP主机:103.12.134.112,port:25;

时间:2014-08-29 08:31:25

标签: java

我使用java邮件发送邮件,我遇到了这个错误:javax.mail.MessagingException:无法连接到SMTP主机:103.12.134.112,port:25; 我已经看到了相关的问题,但它不适合我,使用窗口8.请提前帮助我,谢谢。

package com.airportbookingvn;
    import java.io.ByteArrayOutputStream;
    import java.io.OutputStream;
    import java.util.Properties;





    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.util.ByteArrayDataSource;

    import com.lowagie.text.Chunk;
    import com.lowagie.text.Document;
    import com.lowagie.text.Paragraph;
    import com.lowagie.text.pdf.PdfWriter;



    /**
     * Email with PDF example.
     * <br><br>
     * Email sending code adapted from http://www.java-tips.org/other-api-tips/javamail/how-to-send-an-email-with-a-file-attachment.html.
     * @author Jee Vang
     *
     */
    public class SendAttachment {

        /**
         * Sends an email with a PDF attachment.
         */
        public void email() {
            String smtpHost = "103.12.134.112"; //replace this with a valid host
            int smtpPort = 25; //replace this with a valid port

            String sender = "sender@yourhost.com"; //replace this with a valid sender email address
            String recipient = "recipient@anotherhost.com"; //replace this with a valid recipient email address
            String content = "dummy content"; //this will be the text of the email
            String subject = "dummy subject"; //this will be the subject of the email

            Properties properties = new Properties();
            properties.put("mail.smtp.host", smtpHost);
            properties.put("mail.smtp.port", smtpPort);     
            Session session = Session.getDefaultInstance(properties, null);

            ByteArrayOutputStream outputStream = null;

            try {           
                //construct the text body part
                MimeBodyPart textBodyPart = new MimeBodyPart();
                textBodyPart.setText(content);

                //now write the PDF content to the output stream
                outputStream = new ByteArrayOutputStream();
                writePdf(outputStream);
                byte[] bytes = outputStream.toByteArray();

                //construct the pdf body part
                DataSource dataSource = new ByteArrayDataSource(bytes, "application/pdf");
                MimeBodyPart pdfBodyPart = new MimeBodyPart();
                pdfBodyPart.setDataHandler(new DataHandler(dataSource));
                pdfBodyPart.setFileName("test.pdf");

                //construct the mime multi part
                MimeMultipart mimeMultipart = new MimeMultipart();
                mimeMultipart.addBodyPart(textBodyPart);
                mimeMultipart.addBodyPart(pdfBodyPart);

                //create the sender/recipient addresses
                InternetAddress iaSender = new InternetAddress(sender);
                InternetAddress iaRecipient = new InternetAddress(recipient);

                //construct the mime message
                MimeMessage mimeMessage = new MimeMessage(session);
                mimeMessage.setSender(iaSender);
                mimeMessage.setSubject(subject);
                mimeMessage.setRecipient(Message.RecipientType.TO, iaRecipient);
                mimeMessage.setContent(mimeMultipart);

                //send off the email
                Transport.send(mimeMessage);

                System.out.println("sent from " + sender + 
                        ", to " + recipient + 
                        "; server = " + smtpHost + ", port = " + smtpPort);         
            } catch(Exception ex) {
                ex.printStackTrace();
            } finally {
                //clean off
                if(null != outputStream) {
                    try { outputStream.close(); outputStream = null; }
                    catch(Exception ex) { }
                }
            }
        }

        /**
         * Writes the content of a PDF file (using iText API)
         * to the {@link OutputStream}.
         * @param outputStream {@link OutputStream}.
         * @throws Exception
         */
        public void writePdf(OutputStream outputStream) throws Exception {
            Document document = new Document();
            PdfWriter.getInstance(document, outputStream);

            document.open();

            document.addTitle("Test PDF");
            document.addSubject("Testing email PDF");
            document.addKeywords("iText, email");
            document.addAuthor("Jee Vang");
            document.addCreator("Jee Vang");

            Paragraph paragraph = new Paragraph();
            paragraph.add(new Chunk("hello!"));
            document.add(paragraph);

            document.close();
        }

        /**
         * Main method.
         * @param args No args required.
         */
        public static void main(String[] args) {
            SendAttachment demo = new SendAttachment();
            demo.email();
        }
    }

    ERROR :
    javax.mail.MessagingException: Could not connect to SMTP host: 103.12.134.112, port: 25;
      nested exception is:
        java.net.ConnectException: Connection timed out: connect
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
        at javax.mail.Service.connect(Service.java:291)
        at javax.mail.Service.connect(Service.java:172)
        at javax.mail.Service.connect(Service.java:121)
        at javax.mail.Transport.send0(Transport.java:190)
        at javax.mail.Transport.send(Transport.java:120)
        at com.airportbookingvn.SendAttachment.email(SendAttachment.java:89)
        at com.airportbookingvn.SendAttachment.main(SendAttachment.java:136)
    Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.DualStackPlainSocketImpl.connect0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
        at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
        at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
        at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
        ... 8 more

1 个答案:

答案 0 :(得分:0)

目前没有smtp服务器在103.12.134.112端口25监听(我刚检查过)

您可以使用telnet进行检查。有关详细信息,请参阅balanv的回答https://stackoverflow.com/a/11988455/3536342