-2

プロジェクトでJavaMail APIを使用してメールを送信しています.しかし、メールにファイルを添付するコードを書くと、メールの送信に時間がかかります.5回のうち4回は接続タイムアウトエラーが発生します.具体的なことがわかりません.その理由.ファイルデータは約400〜500 KBですコードは次のとおりです

public static void sendMailTo(String receiverEmailID, String emailSubject,String emailBody,ArrayList<String> attachmentFilepath) throws AddressException, MessagingException, IOException {

        Properties properties = new Properties();           
        properties.put("mail.transport.protocol", "smtp");
        properties.put("mail.smtp.host", "smtp.gmail.com");
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.port", "587");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.smtp.text", "text/plain");
        properties.put("mail.smtp.debug", "true");

        // Authentication For Sender.
        if (session == null)
            session = Session.getInstance(properties,
                    new javax.mail.Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication("username","password"
                            );
                        }
                    });

        // This block process to send mail on particular UserID
        Message message = new MimeMessage(session); 
        message.setFrom(new InternetAddress(""));
        message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receiverEmailID));
        message.setSubject(emailSubject);
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(emailBody, "text/html");
        messageBodyPart.setDisposition(Part.INLINE);
        Multipart multipart = new MimeMultipart("mixed");

        multipart.addBodyPart(messageBodyPart); 
        int i=0;
        while(i<attachmentFilepath.size()){
              BodyPart attachment = new MimeBodyPart();
              DataSource source = new FileDataSource(new File(attachmentFilepath.get(i)));
              attachment.setDataHandler(new DataHandler(source));
              attachment.setFileName(source.getName());
              attachment.setDisposition(Part.ATTACHMENT);
              multipart.addBodyPart(attachment);              
              i++;
        }    
        message.setContent(multipart);
        Transport.send(message);// This statement send Message.             
    }
4

1 に答える 1

0

ping smtp.gmail.com -t を試してください

荷物の紛失はありませんか?はいの場合、これはあなたの問題 (ネットワークの問題) に対する答えです

于 2012-05-22T11:31:25.680 に答える