超出客户端的Javamail速率

时间:2014-03-03 18:23:05

标签: javamail

我需要从一段时间发送至少200条消息。程序启动时,将邮件成功发送到15或17,然后我收到此错误:

MESSAGE ERROR:

com.sun.mail.smtp.SMTPSendFailedException: 421 4.4.2 Message submission rate for this client has exceeded the configured limit

我能做什么?

CODE JAVA

public void mandarEmail(String correos, String mensaje, String asunto) {
    Message message;
    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.transport.protocol", "smtp");
    props.setProperty("mail.smtp.port", "587");
    props.put("mail.smtp.host", "pod51004.outlook.com");
    props.put("mail.smtp.debug", "true");

    Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("docemail@usmp.pe", "docpass");
        }
    });

    try {
        message = new MimeMessage(session);
        message.setFrom(new InternetAddress("USMP - FN <documentos-fn@usmp.pe>"));
        message.setSubject(asunto);
        message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(correos));
        message.addRecipients(Message.RecipientType.BCC, new InternetAddress[]{new InternetAddress("ivan_pro_nice@hotmail.com")});
        message.setContent(mensaje, "text/html; charset=utf-8");
        Transport transport = session.getTransport("smtp");
        transport.connect("docemail@usmp.pe", "docpass");
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    } catch (MessagingException e) {
        throw new RuntimeException(e);
    } finally {
        props = null;
        message = null;
    }
}

3 个答案:

答案 0 :(得分:3)

这是您要连接的服务器,客户端问题。 Here's a doc关于如何从服务器解析SMTP代码。

  

邮件服务器将回复客户端的每个请求(例如您的电子邮件)   程序)使用返回码。此代码由三部分组成   号。

在您的情况下,您将获得421

答案 1 :(得分:1)

如果您要向200个客户发送单个电子邮件。你可以添加一系列接收者的电子邮件地址,大小最多为50。 但我想为每封电子邮件发送不同的消息。然后,您可以创建一个新的电子邮件服务器连接,其中包含一个计数发送电子邮件的计数器,并计算它应该创建一个新连接。

使用mailtrap.io测试代码

答案 2 :(得分:0)

您可能需要从邮件服务器供应商处购买“商家”帐户,以便他们发送更多电子邮件。