We are using the Gmail API to send emails to our users at the time of registration. Everything has been working fine, but lately (since about a month) some emails are taking some minutes to arrive.
There is no error or log, it is just slow. Pasting the headers of an email into https://toolbox.googleapps.com/apps/messageheader/analyzeheader we can see that the email is delayed some minutes on a server from Google
The Google Developers Portal links to this tag in stackoverflow for support, but we couldn't find more information about it.
How can we know why is this happening? and how can we prevent it?
Any help would be greatly appreciated
Thanks
-- UPDATE
We tested using SMTP with JavaMail directly to send the emails and the delivery times are back to normal
Related
Non-technical person here 🙋♂️
I'm having an issue where (using the Oauth 2.0 Playground) I authorize an internal user's GMB account and configure real-time notifications to be sent to our GCP topic. Every few days or so, notifications stop getting sent to our topic and when I check the notification settings for that account, they have been subscribed to an unknown GCP topic. I can reconfigure the notifications settings again, but every few days they are reconfigured to the unknown GCP topic.
It's possible some other app is overwritting my changes periodically, but I am having trouble figuring out where they're coming from.
Is there a log I can review to know where the request to change the notification settings is coming from?
When using the OAuth 2.0 Playground to configure settings, do they "expire" at some point? If so, is how do I prevent that from happening?
Thanks in advance for your help!
You can start looking into when and who created the unknown GCP topics by checking your Cloud Logging for created topics. You can do this by:
Open your Google Cloud Console
Open "Logging"
There should be a "Query" tab and select it.
Input protoPayload.methodName="google.pubsub.v1.Publisher.CreateTopic" and click "Run Query". You can check this reference if you'd like to see other logs related to Pub/Sub.
Click "LAST 1 HOUR" to adjust the time parameters of your log query. (Example: adjust it to a whole month to query all Created topics within a month)
Click the ">" beside the result and expand the log.
There are lots of info like the created topic name, what email authenticated this request, etc. In your case you should look out for field authenticationInfo for you to check who invoked the request:
authenticationInfo: {
principalEmail: "email-used-to-create-the-topic#example.com"
principalSubject: "user:email-used-to-create-the-topic#example.com"
}
NOTE: For testing purposes I blacked out my project-id and email for this example. Also the topic I created is log-this-topic and the email in the log mine since I was the one that created the topic.
OAuth have set rules for expiration, you can check it on Refresh Token expiration.
Sometimes I feel like I don't understand Salesforce at all.
My company uses Salesforce and Marketing Cloud. I'm the one who sends emails in MC, but I'm having trouble investigating the cause of some undelivered emails. We have a handful of Salesforce campaigns created specifically to hold contacts for a series of mass emails. I added the Salesforce campaigns to the audience list when sending the latest email. After accounting for duplicates and contacts without email addresses, there were approximately 40,000 that would receive the email. But only 32,000 actually sent.
Some of these email addresses were unsubscribed, but many were marked as Active or not in the All Subscribers list in Marketing Cloud. I've looked through the reports and can't seem to find one that looks like it would shed some light on this issue. And the Salesforce Help site is not helpful.
Why would active subscribers not receive emails? Can I even send emails to someone who is opted into email in Salesforce but who's not in the All Subscribers list in Marketing Cloud?
There are multiple reason why a subscriber is not receiving an email. Well, assuming that the code/email template itself is okay and is not causing any error state at the parsing moment, the first thing to check if as you mention, the unsubscribed or bounce/held state.
Othe simply reason could it be if the subscriber is unsubscribed now or claimed your email as spam.
Finally, also consider there should be certain IPs to be whitelisted to avoid a deliverabilty issues among others.
You can find more details on this logic here
I am faced with a rather strange request and there isn't much material online tackling that.
I am building a web app on GAE ... front end, back end, datastore, blob store, user accounts, the whole nine yards ...
Part of the requirements is to have a user communication system, (users sending messages to each other, just like Facebook) as user emails are not to be shared among other users, and the web app shall only send emails to the user sign up email strictly for security and administration purposes, and wont flood their inbox with notifications like some websites do.
I have narrowed narrowed it down to 4 options
Option 1:
Reinvent the wheel - Build this whole system form scratch on the Datastore and Blob store. However, not only is it expensive, but also I am not gonna go through all of that (just saying honestly)
Option 2:
Build a bouncing system ... User A sends message to app ... app bounces email to User B. Not very Elegant, impossible to create threads and conversations, eats up app Mail Quota used for Marketing and what not.
Option 3:
Host My own Email server onsite. Patch an API servlet and run the whole show through API. Very valid, except that the client doesn't want anything on site, and I wont be around to maintain it for him.
Option 4:(Best option if someone helps out)
Implement option 3 on a 3rd party email provider. Which brings us to the question, is there any respectable email provider that allows account sign up through API ?? I need to create a shadow email account on a 3rd party server(that the user will never know it exists) every time someone makes an account on my app. Then store all emails and their generated passwords in the Datastore, and when user logs in my web app, web app logs in 3rd party server, retrieves messages and serves it. When he wants to send a message, web app gets the message, sends an email using API as well. If someone knows how to do that on Gmail, I would be eternally grateful (but I highly doubt google allows that)
Note
I can implement the whole setup on xmpp/Jabber servers as well but these free servers keep changing all the time and they change their configurations ... bottom line they are not very reliable.
Thanks a lot guys !! I really appreciate any feed back and if you have any other suggestions please don't hesitate !! This is by no means a solid plan yet.
We are sending newsletters to users subscribed through a TV Show website, using Google App Engine Java Mail API.
The FROM address we are using are name#example.com but the problem occurs with name#[appid].appspotmail.com as well.
We already setup a SPF and DKIM records and we have a low score on SpamAssassin (about 0.7).
All others email providers receive the email normally (hotmail, yahoo, aol, etc.), but, in Gmail, ALL messages are sent straight to Spam folder. Every single one.
Anyone have a clue on this?
If all the other mail providers are working, you may want to look at gmail's spam policy: https://support.google.com/mail/bin/answer.py?hl=en&answer=81126 It may shed some light on the issues you're having.
my application deployed on app engine has been working succesfully half a year. One function is a sending of emails. But today it started to fail everytime with this error:
javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Illegal Arguments (java.lang.IllegalArgumentException: Unauthorized Sender: Unauthorized sender))
Of course sender email is registered in app engine console.
I didn't change anything!
Anyone who share same issue?
If someone have the same problem, the reason is the sender for the mail is incorrect or doesn't have permissions to send the email, I use the default noreply#your-application-id.appspot.com account to send the email.
InternetAddress from = new InternetAddress(
String.format("noreply#%s.appspotmail.com", SystemProperty.applicationId.get()),
"Your Application Name") ;
message.setFrom(from);
You can check if the account of your user is not marked as a spammer or disabled in Google Apps.
If you are sending a very large number of emails to a single email account, Google can throttle you. When we were sending emails whenever we got an error, we ran into a similar problem.
Also, there is a limit on number of calls to mail API per minute.
Maybe earlier you were sending mail to fewer people resulting in fewer calls to the mail api.
It's 8 calls per minute, unless you have provided a credit card number to enable your billing.
Does your sender email address has permission to access this app engine application ?
it's must have permission to access your application then it will work...