Diese Konversation wurde aufgrund von Inaktivität geschlossen. Bitte erstellen Sie einen neuen Post.
Level 1
Level 2
Melden Sie sich an, um alle Badges zu sehen
Diese Konversation wurde aufgrund von Inaktivität geschlossen. Bitte erstellen Sie einen neuen Post.
We have a requirement to send the email in batches as we have a huge recipient list and our smtp servers are not allowing that huge list at a time in one go.
So, we are writing a logic to send the email to the recipient list in chunks. While doing that at the line "messageGateway.send(email);", I'm facing an error "The MimeMessage is already built.null".
Could anyone help me on this.
Gelöst! Gehe zu Lösung.
Zugriffe
Antworten
Likes gesamt
Thanks for sharing the code snippet.
As per [0], when you create an instance of HtmlEmail, set its properties and then invoke the send() method, the object will internally invoke the following methods:
It is ok to invoke sendMimeMessage() multiple times, such as a send-with-retry scenario. The problem is that buildMimeMessage() can only be invoked once. When you rely on the send() base class method, you get the exception found by the original poster.
The solution is to use the two methods when your Email object is a HtmlEmail. You explicitly invoke buildMimeMessage() once, then invoke sendMimeMessage() one or more times.
[0] - Reference: https://stackoverflow.com/questions/16854579/re-sending-multipartemail-with-apache-commons-mail
Zugriffe
Antworten
Likes gesamt
@Monica_Allamneni little more context on implementation pls.
Zugriffe
Antworten
Likes gesamt
Hi @Mayank_Gandhi ,
Below is the logic I'm using. When I have written the messageGateway.send(email) in a loop, It is throwing the error "The MimeMessage is already built.null". But as per our requirement we have to send the emails with recipient list restricted to 90 at one time. So we have to use the loop.
Zugriffe
Antworten
Likes gesamt
Thanks for sharing the code snippet.
As per [0], when you create an instance of HtmlEmail, set its properties and then invoke the send() method, the object will internally invoke the following methods:
It is ok to invoke sendMimeMessage() multiple times, such as a send-with-retry scenario. The problem is that buildMimeMessage() can only be invoked once. When you rely on the send() base class method, you get the exception found by the original poster.
The solution is to use the two methods when your Email object is a HtmlEmail. You explicitly invoke buildMimeMessage() once, then invoke sendMimeMessage() one or more times.
[0] - Reference: https://stackoverflow.com/questions/16854579/re-sending-multipartemail-with-apache-commons-mail
Zugriffe
Antworten
Likes gesamt
Hi @Pulkit_Jain_ ,
Thanks for acknowledging. But the problem here is I'm not only sending the email but also building the email multiple times as I'm adding the recipient list in a loop.
Also com.day.cq.mailer.MessageGateway do not have the build and send methods separately.
Thanks,
Monica
Zugriffe
Antworten
Likes gesamt
@Monica_Allamneni Yes there is no build method, try this approach and invoke sendEmail now
@Overridepublic List<InternetAddress> sendEmail(final String templatePath, final Map<String, String> emailParams, final InternetAddress... recipients) { List<InternetAddress> failureList = new ArrayList<InternetAddress>(); if (recipients == null || recipients.length <= 0) { throw new IllegalArgumentException(MSG_INVALID_RECIPIENTS); } final MailTemplate mailTemplate = this.getMailTemplate(templatePath); final Class<? extends Email> mailType = this.getMailType(templatePath); final MessageGateway<Email> messageGateway = messageGatewayService.getGateway(mailType); for (final InternetAddress address : recipients) { try { // Get a new email per recipient to avoid duplicate attachments final Email email = getEmail(mailTemplate, mailType, emailParams); email.setTo(Collections.singleton(address)); messageGateway.send(email); } catch (Exception e) { failureList.add(address); log.error("Error sending email to [ " + address + " ]", e); } } re
Zugriffe
Antworten
Likes gesamt
Zugriffe
Like
Antworten
Zugriffe
Likes
Antworten
Zugriffe
Likes
Antworten
Zugriffe
Likes
Antworten
Zugriffe
Likes
Antworten