I tried to use Java mail API to send a gmail with starred. I read in many places and I added code as follows:-
if (mailHighPriority) {
msg.setHeader("X-Priority", "1");
msg.setHeader("Importance", "high");
msg.setHeader("priority", "Urgent");
msg.setHeader("x-msmail-priority", "high");
}
However, I am not able to set the Gmail as starred. Is there any other option for this? Thanks
STARRED is a label used by gmail. You can't set a label when sending a mail.
You need to set up a filtering rule or use the gmail api to apply labels to messages.
Related
I found some sources to read mails from gmail like: https://javahowtos.com/guides/127-libraries/366-how-to-read-gmail-using-java-and-javax-mail.html
It works super but I want to add label when I read the mail. You know that we can add labels in gmail https://support.google.com/mail/answer/118708?hl=en&co=GENIE.Platform%3DDesktop
Is it possible with javax mail?
Used gmap to solve it: https://mvnrepository.com/artifact/com.sun.mail/gimap
GmailMessage gmsg = (GmailMessage) message;
gmsg.setLabels(new String[]{"Label1"}, true);
I have a scenario where I have to read a mail sent out by a X person with a specific subject, which i will be receiving on a daily basis.
Is there any JAVA Gmail APi provided by google to retrieve the recent mail that i have received.
And also is there a way to retrieve the mail for a given date?
Yes there's a Gmail API and it has a Java client library, you can check the Quickstart to get used to it.
Now, for retrieving a list of mails you will need to use the Users.messages: list endpoint ( There's also a Java example on how to use that endpoint). Answering your question about retrieving certain emails, you will need to use the q parameter and set the values there as if you would be searching an email in the gmail search bar. I will leave you an example that you can try using the Try this API:
List emails from certain user and date.
Notice
You will only get the email's IDs, for getting more info about an email, you will have to use the Users.messages: get endpoint.
I have the following use case in my app:
When a specific event happens in the app all interested users should be notified by email. Then if a user replies to the email, his reply should be shown in the event page in the app.
My initial idea was to create a temp mail alias of the main notification email every time when an event happens and send the notification email with that alias set in the Reply-To header. Then if someone replies to that mail by using the alias (let's say csa123423#mydomain.com) I can figure out which event this reply refers to.
It turned out that Spring's JavaMailSender doesn't provide a way to use aliases, so I tried with Gmail API. As far as I understood creating a Gmail alias means actually setting an already existing email in your domain as an alias for another already existing email in that domain. So the Java code to achieve this using Directory API and Gmail API would look like this:
User newUser = new User();
UserName userName = new UserName();
userName.setGivenName("xsd");
userName.setFamilyName("ewrewr");
newUser.setPrimaryEmail("bbb34262bb45#mydomain.com");
newUser.setPassword("12345");
newUser.setName(userName);
User result = directoryService.users().insert(newUser).execute();
SendAs sendAs = new SendAs().setSendAsEmail("bbb34262bb45#mydomain.com").setReplyToAddress("bbb34262bb45#mydomain.com").setDisplayName("My name").setTreatAsAlias(true);
SendAs sendAsResult = gmailService.users().settings().sendAs().create(user, sendAs).execute();
MimeMessage emailContent = createEmail("mymail#gmail.com", "bbb34262bb45#mydomain.com", "Test from app", "Test body");
Message message = createMessageWithEmail(emailContent);
message = gmailService.users().messages().send(user, message).execute();
But as far as I know there are some limits on the number of accounts you can create per domain/account and also Google would charge more for this.
Is there another easier way to create aliases in Gmail? Or is there another approach to achieve the desired functionality (linking mail replies to application content) without using mail aliases?
Try leveraging '+' functionality given by Gmail for creating temporary aliases.
The basic idea is if my email id is xyz#gmail.com, I can send/receive an email with xyz+1#gmail.com or xyz+anything_here#gmail.com and it will work like a charm.
You can utilize this by keeping the alias/unique-id after the '+' in the Gmail id and then parse this alias easily in your application.
I making one application that can send different email, but the email address depends of the user. I'm using mailjet to do this, after reading the doc, it's seem that i have to add every email for have the right to send email from this address, but this address are not generate by me (they are gmail, toto, etc)
I already use the Java API of mailjet to add user, and this part is working fine
But my problem is when the validation email arrive, and the person follow the link, mailjet ask to login, but he do not know what to do, because normally is my own account, i only what to add their email address to have the right to send email with them.
So the question, is how i can add email address (from gmail, yahoo...) and activate the user, without the login part.
Thanks for having choosen Mailjet to power your email!
I believe the right setup for you would be to use the Sender header. It will allow you to send email from a unique (or multiple, depending of your setup) pre-validated sender email addresses while setting the From email header to the email you want to send the email from.
In your recipients Inbox, it will display as foobar#gmail.com via notifications#mycompany.com, indicating clearly to the recipient that you're sending on behalf of foobar#gmail.com. This way, you won't be forced to validate each email address, just ones you'll
This is a very common setup for resellers and platforms sending a lot of personalised email.
In order to achieve this, please contact our [support team](https://app.mailjet.com/support] with a reference to our discussion here so they know what we're talking about. They'll guide you to the implementation it.
Hope it helps,
Best.
I was reading about what is the best way about sending email through play framework (java). I have found this: https://github.com/playframework/play-mailer and I followed the instructions. I use gmail.
Here is what I added into application.conf:
play.mailer.host="smtp.gmail.com"
play.mailer.port=587
play.mailer.ssl=yes
play.mailer.tls=no
play.mailer.user="blabla#gmail.com"
play.mailer.password="blabla"
and here is my controller:
Email email = new Email();
email.setSubject("Confirmation");
email.setFrom("Mister FROM <test#gmail.com>");
email.addTo("Miss TO <test2#gmail.com>");
email.setBodyText("A text message");
email.setBodyHtml("<html><body><p>An <b>html</b> message</p></body></html>");
mailerClient.send(email);
Everything compiles with no problems, but when I run it I get this exception:
[EmailException: Sending the email to the following server failed : smtp.gmail.com:587] at mailerClient.send(email);
You have to change the change the gmail configuration also .
like-
Go to your gmail account then in setting section go to the "Forwarding and POP/IMAP" tab then enable "Enable IMAP".
Hope this will help if you are sending the correct credential.