Not delivering to previously bounced address - Mailgun - laravel

I'm setting up my Laravel website, and now comes the part where I configure Mailgun to send and receive emails.
I followed different guides to do that, yet I don't feel I'm doing it right. I'm now stuck with this error:
Failed: postmaster#syrianafood.dk → ibrahim_hasan_eng#hotmail.com 'New Order from Ibrahim Hasan' Not delivering to previously bounced address
i.e. Mailgun is not able to deliver my emails. Could you please guide me through this? Thank you!

If mail was sent and rejected by the provider (bad content, headers, etc), Mailgun will automatically blacklist that address from being sent to in the future.
This is to prevent blacklisting yourself from many of the different MX providers out there.
If you think you've solved that problem, you can perform a DELETE request through the Mailgun API in the format of DELETE /<domain>/bounces/<address> before sending the mail, and then you'll be able to send to that address again.
You can check if a bounce has happened previously by performing a POST request to POST /<domain>/bounces. Furthermore, you will receive a JSON object back with a REASON as to why the bounce occurred, giving you the ability to respond in kind to this.
If a domain is not working correctly and it's not in the blacklist, then it's possible that the MX Provider its self is not accepting the emails and is responding unfavorably in a way that Mailgun cannot handle.
You can also delete the mail directly from the Mailgun UI if you have the login credentials. Please see the comment below and give it an upvote.

Related

How to improve email robustness? [mailgun, laravel]

I planned to improve email robustness using below way. I am using laravel and mailgun. If any bounces email is in the mailgun then i want to send that to someone related to the email(not to that previous receiver and it related with previous sender or someone) so that i plan to use Task scheduler and schedule every hour this process. After that email send successfully i want to remove that email from mailgun.
I actually want to know how to implement get bounces email from mailgun and if send successfully using Task scheduler i want to remove that email from mailgun. if any sample's to achieve this? or any different ideas?
Normally when a bounce happens, providers such as Mailgun will retry a few times depending on the bounce status/type. After failing to send to that email address, Mailgun will put that address into your Bounces list to avoid sending to that address in the future. There's really no point in trying to send emails to an address which doesn't exist, inbox is full, domain expired, etc. So perhaps you should review your bounce list before you consider doing this. Mailgun's dashboard provides the description and date it happened. If you wish to send to a particular address again, you can remove the address from the bounce list. More about bounces here.
You can use mailgun-php or simply use Guzzle to call their API to retrieve your bounces. I'm not sure what you meant my removing email, but hope this helps.
Edit:
You can use their API to get all your bounces, and also the message content (retention depends on your plan or settings) if you need the original content. You could also use their webhooks to get the failed emails, so you don't really need to schedule/cron.
Edit 2:
The bounce list only stores email addresses of previously bounced emails. Also, I just realized that, if you're checking hourly for bounced messages, looks like the suppression/bounce API won't be of much help since you can't know if a message has failed for an address already on the list. This is the only data from bounce list:
{
"address": "alice#example.com",
"code": "550",
"error": "No such mailbox",
"created_at": "Fri, 21 Oct 2011 11:02:55 GMT"
},
So looks like you've to use the events API or webhooks to get the failed messages.
I've used mailgun-php sometime ago, and I found that the it wasn't easy working with Events on that library due to protected properties of the class. So if you have trouble, maybe just use Guzzle or use webhook approach instead.

After merging a Mandrill account into Mailchimp, how can I accept a verification email if my sending domain is not setup to receive emails?

We've been using Mandrill for years to deploy our app's signup confirmation and password reset emails. This has worked perfectly as we've had SPF and DKIM records added to the DNS configuration according to Mandrill's documentation for verifying sending domains.
However, after merging the Mandrill account with a new Mailchimp account--which is mandated by April 27th--it's requiring me to send a verification email to an address at that domain. The problem is that we don't have a mail server set up to receive emails. The domain is only used to send the "noreply#domain.com" emails.
Any ideas on how I might resolve this? Mailchimp is not giving an option to undo the merge, so effectively I have an app that users are not able to sign up for at the moment, which is problematic to say the least.
You'll want to configure at least one mailbox on that domain somehow to receive mail. That's the only way to confirm ownership of the domain.

How to know mail send or not send in laravel and which recipient is not getting it?

Hi I am using the bellow function, can you please guide me how can I use Mail::failures(); in it
Mail::send('emails.caregiversetprimary', $templateArray, function($message)use($email)
{
$message->to($email, 'username')->subject('my subject');
});
Mail::failures(); < ====== this gives me black array as I have used wrong email
I am using laravel 4.1
tl;dr
You can know which recipients the email has been sent to but no which recipients have received it.
details
You need a better understanding of how mail servers work. From a Laravel point of view, there is no way (or at least not a simple one*) of knowing which recipients got the email. Its a matter of how mail protocol works. You may know which recipients the message has been sent to but no which recipients actually got it.
With Mail::failures() you get a list of recipients to which Laravel tried to send the email but it failed on actually sending it. But again, if it has been sent there is no straightforward way to known if the mail reached their inbox or no.
*If you happend to use Mailgun, Mandrill or any other 3rd party software then you are not dealing with a mail server 'per se' but with an API service. May be you could check the mail service provider documentation to research if they perform any kind of delivery tracking that you can programatically check.

Swiftmailer successfully sends but no mail received

I have made a simple contact form and use swiftmailer(with symfony2) to send and email.
Everything is fine when I'm using gmail account but on production it has to be a noreply address in website domain.
So I changed parameters to correspond this email account.
It looks like it is working a send method return true but no message is received, i checked a spam folder but it didn't get there either. Settings are 100% correct as they work in thunderbird.
Have no idea where to look for a problem. Any suggestions what should I check?
I have tried to send email with PHPMailer using same account and it worked so it seems problem is just with swiftmailer.
I'm sending emails in few more places in my project and would like to avoid changing it now but fix it instead.
After checking logs the problem was found.
Emails were rejected because I was setting From filed to email provided by user. Server was rejecting them because this address don't belong to account I was sending from.
By default the logging for swiftmailer is disabled in production. You can enable logging for swiftmailer in config.yml by adding a "logging: true" to the swiftmailer section as outlined here: http://symfony.com/doc/master/reference/configuration/swiftmailer.html#logging
Hopefully this will give you some more specific error messages to search on.

Personalized-Mailer-CodeIgniter-Spark

I m using personalized mailer library in Codeigniter for sending emails to customers, mails are going perfectly but how can i get bounced email list. Please help me how to do this...Thanks
Unfortunately servers are not required to send a rejected email request. And those that do, have no standard way of doing so. The gmails and hotmails might, but you cant rely on a response.
If you think about it, it would be a great security concern if that were allowed as you could check for all valid emails at a domain.

Resources