I'm experimenting with sending a large email mailing using Java's email API to permit me to attach files and insert images.
The problem I'm addressing is ERROR 452. I.e. Domains like Yahoo that will not permit too many emails from a single sender to be delivered to Yahoo email accounts in too short a time period.
For example, sending to a list with say 25 "@yahoo.com" addresses will trigger its SPAM blocker. It will not deliver the message. Instead it will return ERROR 452 message to the sender.
When I want to use the list for TO: addresses it's easy to overcome that problem, because I can code a delay between each send that is sufficiently long to avoid triggering ERROR 452 by the domain that has such a blocker.
When I send an email to a single TO: address and put my long list as BCC: addresses I can't figure out if, or how, I can spread out transmission of the BCC: copies.
So I need to learn more about how Java API works.
More specifically ... assume I create a message with a
-- single TO: address and
-- 50 BCC: addressees.
1. Does the App send a single message to the ISP server that relies on the ISP server create a separate message for each TO:, CC:, and BCC: addressee? (Bad ... because then I can't delay transmission of BCC: messages to dodge the 452.)
2. Does the Java API create the separate messages required for each addressee and send them to the ISP for delivery? (Good ... In which case it seems I have a hope of transmitting the copy for each BCC: addressee at delayed intervals)
Does anyone have any other suggestions for how to deal with long BCC: address lists?
(I assume you're asking about JavaMail code which you have access to.)
When you call the "send" method, it connects to the server and sends the message along with all the recipients. That doesn't actually send the message to anybody, it just gives it to the server to handle. It's up to the server to make sure that each recipient gets their version of the message. You can turn on the debug mode in JavaMail to look at the conversation between your code and the SMTP server, that might clarify things for you.
By the way, the word "Deferred" in the error message doesn't sound like a rejection to me. It sounds more like "Okay, but I'm not going to do this right away". Have you been able to find out what exactly happened to the message which produced the 452?
But I'm pretty sure that
"452 Too many reciients"
is a SPAM related response that means the message will not be delivered.
Its not just a warning that the system is temporarily overloaded and will deliver it later.
I mean I've triggered Yahoo's defensive response with as few as 20 @Yahoo.com addressees, and its hard to belive that would pull any "overload" trigger.
I'm still not sure how Yahoo adminsters that filter, but somehow Yahoo senses when the same message arriving for too many of its accounts in too short a time it rejects it in total for all of the accounts.
But given what you told me it sounds like
-- My local JavaMail API app assembles a single "entity" with all the info, data addressees and sends it to the email server running on the virtual server (hosted by eApps) that serves my domain.
-- Then I'm guessing my server only splits it into separate "entities" for each distinct domain. I mean if my message has 5 addresses at Yahoo.com and 12 at hotmail.com and 2 at hawaii.rr.com my server only sends out 3 "entities".
-- Then when Yahoo.com, hotmail.com, and hawaii.rr.com receive those it is their servers that create and deliver the 5, 12, and 2 individual messages.
Regardless ... It looks like there is no way to get the BCC: copies sent at spaced out intervals.
I mean if the message doesn't get broken up into separate copies for each individual addressee until it gets to the domain of each recipient group, I can't even break them up into small groups, because that would flood the TO: addressee with multiple copies.
Yes, I think that's a pretty accurate description of how e-mail works.
However... have to considered sending your "small group" e-mails with BCC recipients only, and no TO address? I'm not sure if that's possible but I vaguely recall receiving mailing-list entries which appeared to have no TO address.
But alas ... life is not always cooperative ... so for now I'll have to live with the fact there is no way to automate addressing when domains like Yahoo.com are included.
FYI: Now I send the email with all domains that don't produce 452 errors.
Then I take the sent copy and manually forward it to myself with a little note explaining why they weren't included in the original message BCC: line.
But thanks for your help. It saved me lots of time.
Ummm ... not settled but understood.
Thanks for your help.
Just because I live in Hawaii doesn't mean I don't have empathy for who can't live any further than ... dunno ... Detroit MN?