使用 javax.mail 发送大邮件,部分邮件发送失败

J查询

我正在使用 javax.mail 从我的 SMTP 服务器向用户发送大量电子邮件(大约 1000 封),该服务器拥有我的域。并且所有收件人都在同一域电子邮件中。

发送邮件时,如果只有成功,那么我将令牌保存在 userToken 表中。否则我不会将令牌保存在表中。该过程完成后,userToken 表插入了 950 行,这意味着所有电子邮件都成功。

我编写了以下代码来发送批量电子邮件,但用户没有收到近 300 封电子邮件。执行时我没有收到任何错误,

@RequestMapping(value = "bulkMail")
public  @ResponseBody  String bulkMail(Model model, HttpServletRequest request,@RequestParam(value="myArray") Long[] myArray, HttpServletResponse response) throws IOException {
    Session session = null;
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("roca");
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    entityManager.getTransaction().begin();
    HttpSession httpSession = request.getSession(false);
    session = getRocaSession();
    Test test = (Test) httpSession.getAttribute("test");

    for (int i = 0; i < myArray.length; i++) {
        User user = entityManager.createQuery( "SELECT u FROM User u where u.userId=" + myArray[i], User.class).getSingleResult();

        UserToken userToken;
        try {
            userToken = entityManager.createQuery("SELECT ut FROM UserToken ut where ut.testId="+test.getId()+" and ut.userId="+myArray[i], UserToken.class).getSingleResult();
        } catch (Exception e) {
            userToken = new UserToken();
        }

        String mailStatus = sendMail(userToken,test,request, user.getUserId(),  user.getUserName(), context, user.getEmailId(),session);
        if (!mailStatus.equals("failure")) {
            userToken.setToken(mailStatus);
            userToken.setCreatedDate(new Date());
            userToken.setUpdatedDate(new Date());
            userToken.setTestId(test.getId());
            userToken.setUserId(user.getUserId());
            userToken.setUsed(0);
            testDao.saveOrUpdate(userToken);
        }
    }
    entityManager.getTransaction().commit();
    entityManager.close();
    return "Emails have been send to Users";
}

发送电子邮件

public String sendMail(UserTestToken userTestToken, Test test,HttpServletRequest request, Long accountId,String accountName,
        String context,String accountEmail,Session session) {
    String token = getToken();
    try {
        String email = mailService.sendAlert(test, accountEmail,"User Triger", "[email protected]", "Val", accountId, token, context, accountName, session);
        if (!email.equals("failure")) {
            return token;
        }else {
            return "failure";
        }
    } catch (Exception e) {
        return "failure";
    }       
}

获取电子邮件的会话

public Session getSession() {
    Properties props = new Properties();
    props.put("mail.smtp.auth", "false");
    props.put("mail.smtp.host", "gatesmtp.moc.domain.com");
    props.put("mail.smtp.port", "25");
    Session session = Session.getInstance(props);
    session.setDebug(false);
    return session;
}

邮件服务实现

public String sendTestMailAlert(Test test, String accountEmail, String receiverName, String senderEmail, String url, Long accountId, String token, String context, String       accountName, Session session)
{
    String subject = "Subject";
    String content = "Content";
    return sendMail(accountEmail, content, subject, receiverName, senderEmail, session);
}


private String sendMail(String receiverMailIds, String content, String subject, String employeeName, String employeeEmail, Session session) {
    try {
        Message message = new MimeMessage(session);
        try {
            message.setFrom(new InternetAddress(employeeEmail, employeeName));
        } catch (UnsupportedEncodingException e) {
            this.logger.error("Mail service address catch UnsupportedEncodingException");
        }
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiverMailIds));
        message.setSubject(subject);
        message.setContent(content, "text/html");
        Transport.send(message);
        return "success";
    } catch (Exception e) {
        this.logger.error("Mail Exception - " + receiverMailIds);
    }
    return "failure";
}
桑比萨

问题不在您的代码中:如果邮件在您的邮件服务器中正确排队,则问题出在最终收件人的 SMTP 服务器上。

当您的 SMTP 服务器(必须正确发送消息入队)联系收件人 SMTP 服务器时,也许(当然……)收件人 SMTP 会因某些原因(垃圾邮件?未知用户?邮件太多?邮箱已满?)拒绝电子邮件。因此,您的 SMTP 服务器无法传送电子邮件,并尝试将其发送回发件人(您定义为“[email protected]”)。如果此邮箱不存在,则您的 SMTP 服务器将删除邮件并(通常)将该操作仅记录在其内部日志中。这就是为什么你不能注意到发生了什么。

您可以将真实的发件人地址用于测试目的,而不是使用 noreply 地址。

玩得开心 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用javax.mail与ssl发送电子邮件

来自分类Dev

尝试使用Java发送邮件时获取javax.mail.NoSuchProviderException

来自分类Dev

尝试使用Java发送邮件时获取javax.mail.NoSuchProviderException

来自分类Dev

使用Javax发送电子邮件?

来自分类Dev

javax.mail.AuthenticationFailedException:如何无法通过Java发送邮件?

来自分类Dev

使用mail()发送电子邮件

来自分类Dev

检查使用mail命令发送的邮件

来自分类Dev

无法使用mail()php发送邮件?

来自分类Dev

无法使用php mail()函数发送邮件

来自分类Dev

无法使用 php mail() angular 发送邮件

来自分类Dev

使用Java Mail-api发送电子邮件失败

来自分类Dev

在不进行身份验证的情况下以javax.mail发送邮件

来自分类Dev

邮件未使用Apache Commons Mail发送出去

来自分类Dev

使用Java Mail API发送邮件时出现MailConnectException

来自分类Dev

使用Django send_mail方法发送邮件非常慢

来自分类Dev

使用Rails 2.3.18中的mail gem发送邮件

来自分类Dev

PHP不会使用mail.php发送邮件

来自分类Dev

使用Applescript发送不带mail.app的邮件

来自分类Dev

打开多个文件以使用mail()php发送邮件

来自分类Dev

无法使用system.net.mail从VB表单发送邮件

来自分类Dev

cv使用wp-mail发送电子邮件

来自分类Dev

无法使用 java mail api 从 jsp webapp 发送邮件

来自分类Dev

通过Google使用Javax.mail登录失败

来自分类Dev

使用Java SOAP服务会破坏javax.mail引用的可打印邮件封装

来自分类Dev

javax mail getReceivedDate在发送者的时区

来自分类Dev

javax mail getReceivedDate在发送者的时区

来自分类Dev

javax.mail 不想从我的 Web 应用程序发送我的邮件,但它从我的控制台应用程序发送邮件

来自分类Dev

使用send_mail()发送的邮件[Python-Django]不发送嵌入的图像

来自分类Dev

通过Java发送电子邮件-javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:587;

Related 相关文章

  1. 1

    使用javax.mail与ssl发送电子邮件

  2. 2

    尝试使用Java发送邮件时获取javax.mail.NoSuchProviderException

  3. 3

    尝试使用Java发送邮件时获取javax.mail.NoSuchProviderException

  4. 4

    使用Javax发送电子邮件?

  5. 5

    javax.mail.AuthenticationFailedException:如何无法通过Java发送邮件?

  6. 6

    使用mail()发送电子邮件

  7. 7

    检查使用mail命令发送的邮件

  8. 8

    无法使用mail()php发送邮件?

  9. 9

    无法使用php mail()函数发送邮件

  10. 10

    无法使用 php mail() angular 发送邮件

  11. 11

    使用Java Mail-api发送电子邮件失败

  12. 12

    在不进行身份验证的情况下以javax.mail发送邮件

  13. 13

    邮件未使用Apache Commons Mail发送出去

  14. 14

    使用Java Mail API发送邮件时出现MailConnectException

  15. 15

    使用Django send_mail方法发送邮件非常慢

  16. 16

    使用Rails 2.3.18中的mail gem发送邮件

  17. 17

    PHP不会使用mail.php发送邮件

  18. 18

    使用Applescript发送不带mail.app的邮件

  19. 19

    打开多个文件以使用mail()php发送邮件

  20. 20

    无法使用system.net.mail从VB表单发送邮件

  21. 21

    cv使用wp-mail发送电子邮件

  22. 22

    无法使用 java mail api 从 jsp webapp 发送邮件

  23. 23

    通过Google使用Javax.mail登录失败

  24. 24

    使用Java SOAP服务会破坏javax.mail引用的可打印邮件封装

  25. 25

    javax mail getReceivedDate在发送者的时区

  26. 26

    javax mail getReceivedDate在发送者的时区

  27. 27

    javax.mail 不想从我的 Web 应用程序发送我的邮件,但它从我的控制台应用程序发送邮件

  28. 28

    使用send_mail()发送的邮件[Python-Django]不发送嵌入的图像

  29. 29

    通过Java发送电子邮件-javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:587;

热门标签

归档