【问题标题】:i want to send mail using java with out delaying我想使用java发送邮件而不会延迟
【发布时间】:2014-10-30 21:56:43
【问题描述】:

我正在使用 javaMail API 发送邮件,我的代码运行良好,但问题是发送邮件时发送邮件需要时间(延迟时间接近 15 到 20 秒),这就是我的应用程序运行的原因down.我想在发送邮件时不花任何时间发送邮件。请给个想法

这是我的代码:

public class sendMail {

public static void main(String[] args) {
    Properties props = new Properties();
    props=System.getProperties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "587");

    String mail="XYZ@gmail.com";


    Session session = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("abc@gmail.com","********");
            }
        });

    try {
    String emails="xyz@gmail.com"+","+"xyz.kannoju@vxyz.com";
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("xyz.rajender@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(emails));
        message.setSubject("Testing Subject");
        message.setText("Dear Rejender," +
                "\n\n Please find the like!");

    //Transport.send(message);
        Transport tr=session.getTransport("smtp");
        //tr.sendMessage(message, message.getRecipients(message.));
        tr.send(message);
        tr.close();
//Transport         

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

    您可以在自己的线程中运行需要太多时间的方法,让您的主程序继续做其他事情:

    new Thread(new Runnable() {
        public void run() {
            tr.send(message);
            tr.close();
        }
    }).start();
    

    ps:需要将trmessage设为final,并且需要在run方法中添加一些错误处理。

    【讨论】:

    • 非常感谢,我已经尝试过你建议的发送邮件仍然需要时间。
    【解决方案2】:

    发送电子邮件不提供有关交货时间的任何保证或期望。 JavaMail API 不会对进程强加或添加任何延迟,它会立即将电子邮件发送到指定的 SMTP 服务器。从那里到电子邮件被转发到实际收件人的邮箱需要多长时间,这是您无法控制的。根据具体情况,消息可能必须通过多个中间服务器,并且可能会或可能不会在传输过程中的多个点进行处理(病毒检查等)。

    如果您有特定的要求,即您的邮件必须在特定时间内送达,那么电子邮件是一个非常糟糕的传输选择。我的建议是,重新考虑你的架构,要么接受可变的、不确定的交付时间,要么考虑使用其他提供同步通信的消息传递方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多