Does Mandrill automatically retry soft-bounces? - mandrill

If i send an email with Mandrill, and get a "rejected" status back the reason was a "soft-bounce", do Mandrill automatically retry to send the email again after a certain period of time, or do i have to send it myself in my own program again after some time?

According to this answer: https://stackoverflow.com/a/33191720/8862954, Mandrill doesn't deal with soft bounces, because it depends on the individual mailboxes.
Other bounces, according to MD's docs, are handled by adding the email to the rejection list so MD doesn't keep retrying sends to that address.

Related

Mandrill API, message with status "unsub"

I have used mandrill API to send emails and later grab their status, error reasons etc... to store this in my own system.
To grab the status I use the message/info endpoint, but it isn't exactly as documented. The main discrepancy is the fact that there is another status besides "sent", "bounced", or "rejected", which is "unsub". There are emails that were opened, then clicked the unsubscribe link in this status, but also emails that were never even opened. While there are also emails with status "reject" and that include an object with a reject reason as "unsub".
What I wish to know is if I can assume every time the status is "unsub" this means that specific email was when the unsubscribe link was clicked (even though the click is not always registered), or at least undestand the difference between status="unsub" and status="reject" with reason="unsub"

How to obtain final STATUS from a text sent to mobile phone

I am sending a text to a mobile number (US phone number) using the Programmable Messaging Quickstart for C# with .NET Core example. The message is sent and received successfully but the STATUS in the response shows "queued".
Is there a sample callback in C# to obtain the final status after the text is sent?
You have 3 options, either of the first two are suggested.
Subscribe to statusCallbacks, which will alert your application of the delivery status of the send message.
Use Event Streams to subscribe to specific message delivery event types (this option provides the ability to select different types of message delivery events).
Less efficient and not very scalable, make a request to the /Messages endpoint to determine the final disposition of the sent message (via its unique message SID).
Best Practices for SMS Message Logging

Remove a cell number from the Twilio unsubscribe list

I have a very simple alert mechanism to alert drivers "in-the-field" when a new pickup has been assigned to them. I have had an instance twice where a driver has responded with a STOP and became un-subscribed. Once discovered we acquired the proper opt-in documentation from them. Is there any way to re-subscribe a user that opted out and changed their mind on receiving the messaging. i.e. they issued the STOP to the incorrect SMS. And have deleted the original message to START. Or do I need to code something for them to opt back in
My SendGrid provides a method to remove suppression from email but am not finding anything like that here in Twilio.
They need to send a START to the number they previously opted out of, this is currently a requirement. You will also get an error when trying to send messages to them, to alert you they opted out.
Error 21610 - Attempt to send to unsubscribed recipient

how can i cause a MFMailComposeResultFailed error

I want to test a certain behaviour I made for when email sending failed,
but I can't get MFMailComposeResultFailed error. even when there is no internet connection, it still "sends" the email. how can this be done?
This is not possible, hence this kind of "errors" will not be delivered by the delegate. An this make sense, because "Mail" takes care of sending or queuing the Mails.
From the docs (MFMailComposeViewController)
Using this interface does not guarantee immediate delivery of the
corresponding email message. The user may cancel the creation of the
message, and if the user does choose to send the message, the message
is only queued in the Mail application outbox. This allows you to
generate emails even in situations where the user does not have
network access, such as in airplane mode. This interface does not
provide a way for you to verify whether emails were actually sent.
You could check the internet connection before displaying the MFMailComposeViewController. This is technical possible but not recommended. Mail will automatically send the mail if the device is connected to the internet again.
But you have to check if the device is configured to send a mail:
if ([MFMailComposeViewController canSendMail]){
//show MFMailComposeViewController
}else{
//show AlertView
}
Before using this class, you must always check to see if the current
device is configured to send email at all using the canSendMail
method. If the user’s device is not set up for the delivery of email,
you can notify the user or simply disable the email dispatch features
in your application. You should not attempt to use this interface if
the canSendMail method returns NO.
https://developer.apple.com/library/ios/documentation/MessageUI/Reference/MFMailComposeViewController_class/#//apple_ref/c/tdef/MFMailComposeResult

iOS: Unable to fetch Offline messages for XMPP Chat

I am facing an issue with the presence status, following the documentation and XMPPframework example code. I have written a chat application.
Problem : When the user 1 & 2 are online I get the status successfully and they can chat with each other. However when the user 2 goes physically offline via (Wifi OFF / 3G Off) User 1 is not getting the offline status from XMPP and hence what ever messages are sent from that instant of time are lost when the user 2 comes online.
It seems since the user 2 is not notified or stored as offline in XMPP and hence its not storing the offline messages to push back to user 2 when it comes online.
I have tried to resolve this by explicitly writing a [goOffline] call to XMPP, however the call is shown in 'SEND log' for 'user 2' but not received in 'RECV log' in user 1 from XMPP, due to which the message are lost in between.
Also tried with other sources replies.
Set status for presence available and send XMPP
priority changed with values non-negative
XMPPArchiving work but this is not what I wanted.
Server side Mod_zero push enables but get only first message push notification sometimes.
Setting limit on ejabberd.cfg file for users and offline message limit.
request for offline message pull.
Can anyone help me with this?
This is very typical situation where client losses network but server can't detect that it is offline.
To detect status of each client, server need to send PING packets to every client and wait for response.
If client responds then fine otherwise server will mark that client as offline and every other online client will be informed automatically.
Here is PING Module implementation for ejabberd XMPP Server (hope you are using ejabberd server):
mod_ping:
send_pings: true
ping_interval: 10
timeout_action: kill
ping_ack_timeout: 10
This has to be written in ejabberd.yml configuration file.
At client side also we need to enable ping module to respond to server pings as:
private var xmppPing: XMPPPing?
xmppPing = XMPPPing()
xmppPing!.activate(xmppStream!)
This code has to be written while we setupStream() for iOS.
For detailed info, please go through mod_ping documentations.
Sounds like your problem is at server level. The server thinks that the user is online so it sends the message but nobody gets it. This does not really have a simple solution.
1.
The best solution would be delivery receipts. Where basically when the message is sent to your client, your client returns a confirmation of delivery receipt. If the server does not get that receipt it would resend the message every n time. Depending on your XMPP server you might find a already made solution, of not you would have to roll out your own.
2.
A possible hack would be to have your server always store and deliver last 10 messages and then at client side you discard repeated... This also depends on your server implementation. XMPP MUC and PubSub have resources along these lines.
For a long term scalable solution, you'll need to deal with this both at server and client level.

Resources