(1) Ability to send the same email from multiple email addresses to multiple addresses[/QB]
Yes, JavaMail can do this.
(2) Ability to create/edit the email text and add/remove Email Ids from sender list while sending
That's something you would do with plain ordinary Java programming before sending the message
(3) Mails should not appear as Spam as this would be monthly product mailers to people who are subscribers
Whether other mail servers consider your mail as spam depends on much more than the code you use to send the mail. There's your network configuration, your choice of subject line, whether you use HTML format, the content of the text, and a host of other considerations. I get regular newsletters at work all the time that our spam filter flags as possible spam.
(4) Queue up the mails and send the user a report of mails sent successfully/failed mails etc
I'm not sure what you mean by "failed" here. Usually you get "bounce" messages from a server, later, if there's a problem with the address you sent a message to.
I get the feeling that you aren't really an expert on how e-mail works in the Internet.
You should probably educate yourself a little more about the subject before making decisions like this one.