Gmail reports illegal attachment without any attachments - django

We use Django and then Sendgrid to send and deliver transactional e-mails to our users. Since a few weeks back Gmail has increasingly started bouncing the email with the following reason:
552 5.7.0 Our system detected an illegal attachment on your message. Please visit http://support.google.com/mail/bin/answer.py?answer=6590 to review our attachment guidelines. ux5si5383759icb.101
The weird thing is that our email is a simple short text message without any attachments that we know of. The emails usually arrive just fine, but this is happening more often.
Where should we look for the cause? Could we be messing with the e-mail headers, encodings etc that cause Gmail to react like this? Any input is highly appreciated!

We've been experiencing a dramatic increase in this recently, too. Our messages to recipients who use Google's email systems do include attachments, but these are clean pdf's. Sometimes the messages arrive but the attachments can't be opened ("damaged"), sometimes they bounce back with the "illegal attachment" bounce message. I'm seeing this issue reported by many people, going back years, but I have yet to find a single authoritative reponse from Google, or any real fix. Our messages go out from our Exchange 2003 server, and I'm wondering if that's relevant.

Related

AWS SES: How to handle bounces for Transactional emails?

When it comes to marketing emails, when you receive a bounce or a complaint, you should simply remove the email address from the mailing list if it is a hard bounce or spam complaint.
However, how does AWS expect you to handle bounces or complaints from transactional emails (like a forgot password email), since there is no mailing list?
For Bounce, you can use third-party APIs like zero bounce, etc. before sending the emails.
For complaints, if you are getting who are marking the mails as spam then stop sending them the emails. If not then there are many different ways of finding it through Amazon services itself.

Django+Twilio: How can I display inside my django app the sms I sent/received using twilio? (Architecture question)

I have a high level architecture question:
I have a django app where users can send out sms to their contacts (telephone numbers, not users of my app). I am trying to implement a system where if someone replies to a specific text, such reply is forwarded to the user that started the thread.
I implemented an inbound webhooks to receive sms but I am now facing a problem: how do I know which text is a reply replying to? I can't seem to find any type of id in the sms inbound request and I am now starting to fear that this is just impossible.
Any idea? Should I try to use "Conversations"? Would that solve my problem and if so, how should I go about it?
Any suggestion?
Twilio developer evangelist here.
You cannot get the message that a user is replying to, because that doesn't exist in SMS. SMS messages are simply chronological. To test for yourself, open your SMS app and try to reply to the second to last message from someone.
You have a few options to try to tie a reply to a specific message:
Only ever send one message to be replied to at a time. Once you receive a reply to one message (or there's a timeout of some sort), send the next one.
Have the user enter a message identifier in their message. You can then parse the identifier out and associate the reply. This is not very user friendly and they may forget or get the wrong identifier in the message
Use multiple numbers to send the messages. So, if you have an active message you are waiting for a reply to, use a different number to send out the next message. You can then associate the reply based on the number the user replies to.
The last option is my preference since it doesn't affect the messages you can send at any time and doesn't require extra work on behalf of the user. It does require extra work to build a number pool and do the work to associate messages with sending numbers.

Decrease spam rate for a domain in gmail

I am sending emails from my website with postfix my domain name. But suddenly my email credentials was compromised and someone used my credentials to send thousands of emails to peoples. So Because of that, peoples mark that email as SPAM.
Because of that, Now emails are coming to spam in GMAIL now.
Please tell me, How can i fix that issue.
Note: I am using aws ses email service.
Good practice is to have proper SPF + DKIM + DMARC set in your domain, other than that, you can do everything good, but there is 0 guarantee that your email will never be marked as spam, sadly, it's half in your control, the other half is what others have reported from your domain, your server, your content, your actual username, links included, etc. Keep in mind that your reputaion varies per server, so if emails land in spam in Gmail, it doesn't necesarily mean that it'll land in spam in hotmail. Sometimes using a completely different domain/server/service helps, but if the reputation is already tainted, only marking emails as 'not spam' would eventually help the delivery (I know, it sucks when that happens).

SparkPost suppression error and mail stops sending

I am using SparkPost for one of my Django website to send mails to users.
I had an update on site so sending mails to all users.
However few of users have deleted their Gmail id from Gmail and I understand that mails cannot be sent to those ids.
However problem I am facing is that in Django, SparkPost stops sending mails to all users once a single mail fails because of this.
Error message is this:
Message generation rejected Code: 1902 Description: recipient address was suppressed due to system policy
That specific error ...suppressed due to system policy is SparkPost saying that it decided not to send to a particular recipient address because it appears on its Global Suppression List. You can read about it here but basically, no-one should send email to addresses on that list so SparkPost rejects mail for them to avoid an later reputation damage.
That issue alone shouldn't stop all mail from flowing though. Here are a few other options to check out which would have that effect:
What error does SparkPost produce for the other failing messages?
Has your account been suspended? Log in to check.
Does your API key have correct privileges?
As an aside, you could also ask this question on the SparkPost Community Slack team.
You need to clean your mailing list prior to sending out mass mailings. This will weed out stale and unreachable emails to prevent bounce in the first place.
If you are using SparkPost lists, you can just use MailboxValidator to import and clean your list for you.
https://www.mailboxvalidator.com/resources/articles/how-to-import-email-list-from-sparkpost/
If you're not using SparkPost lists, you can dump out your mailing list and just upload into MailboxValidator for cleaning then you can just import the cleaned list back into your system.

How to track how many times an email was opened in amazon SES through API?

How will i track how many times email sent through Amazon SES was opened ?Is there any API i will need to consider?I figured out the complain and bounce myself and i figured out we can associate SES with SNS but i need the click rate too.Please assist.
You can't. SES, like any Internet mail sending system, has no idea whether a message is ever opened. It can't even be certain a message was delivered. People who want to know when a message is opened embed image links (often to invisible images) and track how often those images are fetched from their web server.
And even that doesn't work for users who configure their email program to not fetch images.
Amazon Introduces click and open tracking a few months back -
https://aws.amazon.com/blogs/ses/open-and-click-tracking-have-arrived/
Hope this helps.
You can do that using SendGrid. Is not 100% accurate but it's something :)
Sendgrid will post you a JSON message for all the mailing events (open, delivered, bounced, spam).