How to send email without stock mail app? - ios

How can I send mail on button action without using the stock iOS mail app?
var toAdress = "something#someting.com"
var fromAdress = "from#email.com"
var subject = "Something subject"
var message = "message text"
And i want to send using this info on buttonAction. Any API that does NOT use the stock IOS mail app?

If by “without using the stock iOS mail app” you mean send e-mail without switching to the Mail app, you can use MFMailComposeViewController to present an e-mail dialog within your app, and you can set the to, subject, and message fields for the user to edit (the “from” is the user's address).
If you mean without using this, then unless you are implementing an actual alternative e-mail client it seems very doubtful that you'd want to get into it. Sending e-mail is going to require user interaction and setup for the SMTP server, unless you control the mail server. And if you do control the mail server, you could quite simply set up a web API and make a http call to send the e-mail through your server (this would be suitable, e.g., if the intent is to let the user send you e-mail, or trigger an e-mail sent from you to the user).

Related

How to disable sending default emails when a user place an order?

I am working on a Third party application where I want to send customized template emails to user using webhooks when user place order or shipment gets created.
Is it possible to prohibit system to send email to user who place order and instead of that just fire an event to a third party app(using a webhook) so that that third party app will send email to that user with required and customized new details in new email template(which is not available in default variables of email templates)?
Any solution for this? Please
There's two options. One enables you to prevent emails from being sent and the other repurposes the initial default email. There isn't currently a way to disable the email from being sent as the setting doesn't existing in BigCommerce.
Option 1
Set up an SMTP server and configure mail relay rules
SendGrid covers some good basics on what mail relay is. BigCommerce has a support article for connecting your store to a custom SMTP server. You can also see more in the instructions from Microsoft on how to configure mail relay rules for Exchange.
Overall, this option is more complex.
Option 2
Conversio has a quick and easy guide on replacing the content of the default emails. It isn't the ideal solution, but it is less confusing than sending two receipts.

Send and receive email by Rails App

We have build custom crm app(rails 4.0). One of the features that we have build is that we send emails to our customers based on booking status or we send a custom email by our travel agents.
The next thing we want is that customers can replt on this email. So we can recognize the email thats replyed and related to the initial email is send, so we have a nice email dialog (send/receive) in the crm.
Someone ideas how we can "recognize" the replyed email so we can related it to the right email?
Thanks..remco
In your email client open a reply from someone and show full headers or raw source (how to get it depends on the client but you will find it!)
When you look at the email headers you will find References field
References: <CAAC3oDjZSFywS5mpAANO+svm-3xXwLciUhw_QEkBkNqT9A#mail.com>
<06AFEF94-53D2-4469-59B0A494830C#mail.de>
<E67E3945-D61E-8E45-63C52D111698#mail.net>
And more importantly
In-Reply-To: <6397034C-90CA-41B4-F47AE3F39E76#mail.de>
While every outgoing email has a Message-ID field
Message-ID: <569F22.8060202#mail.de>
To get an if of you outgoing message
result = SomeMailer.message(params).deliver
result.header['Message-ID'].value

Rails and email openened notifications

I am developing an application on Rails and I need to know if its possible to write code which will notify me when the user opens an email that has been sent from my application (need to track this info) ?
The main bit of data I need is was it opened.
thanks
You can do this but there is no 100% certainty you will always get a notification.
SMTP has 2 standards, they are DSN and MDN. Both are in effect optional, there is no guarantee that the email system of the targeted email recipient (your user) will implement them too.
The easiest way is to pit in a "Return-Receipt-To:" (RRT) email header. Put some address as the content of the header. Now when a user opens an email message containing this header, the clients email reader will msot likely prompt your users whether or not to send a return receipt. If the do comply and email will be sent to the address you specified.
In Rails it could be something like:
themailer < ActionMailer::Base
def notify_read
headers['Return-Receipt-To:'] = 'notifyread#mysite.com'
mail(:to => 'users#somecompany.com')
end
end
You could just use an email address you monitor and read them manually OR you could set up rails to read these emails as well. But there is no guarantee you will ALWAYS get an acknowledgment.
Additionally you could check each email domain, many of the big free email providers have proprietary methods of requesting the return receipt. If you add ".readnotify.com" onto the end of your recipients email address you will get a return receipt. You will have to research all the big ones though.
For example:
user#yahoo.com.readnotify.com
Hope that helps
Source: http://railsforum.com/viewtopic.php?pid=147997#p147997
A common way of implenting this is to include a link to an invisible image file, with the link including sufficient details about the email for you to be able to identify which email is being viewed.
When the image is requested by the mail client, your server can then record the viewing attempt. If you use a 3rd party email provider (such as sendgrid, postageapp) then sometimes they'll do that for you and ping your server with the appropriate event. I strongly suspect that this is what readnotify is doing under the hood (someone took the trouble of looking at this a while ago
This isn't completely accurate as some (many?) users turn off remote image viewing in their mail viewers.

iOS app creates email...is there a way to not have a copy of it in the sent folder

My app creates an email that can have sensitive data in it (depending on the users perspective). Is there a way on the iphone's email client not save a copy in the Sent folder.
And in the same way, if the user choses they can send it via text..is there a way to not have it be in the Message streams.
I'm thinking there is not but I'd love confirmation of this if possible. I've been scouring but can't seem to tell if it's possible.
Thanks.
I'll break this into two parts:
Not putting a copy of a sent message in the sent folder:
There's no easy way to do this since you don't have access to a user's mail. You could have the user enter their email service's IMAP details and write your own mail sending implementation that then goes and deletes the sent message from the server, but it's possible that mail clients would keep a local copy regardless of what happens on the server if they grab the message before you delete it. Regardless, this is a really terrible user experience (having the user enter IMAP details, not using the built in mail composer) and it'd be difficult to write (and you would need to be insanely careful about deleting something from a user's mailbox, and you'd have to ask them if it's okay to do so).
Not showing a text message in a Messages app conversation stream:
There's actually a way to do this. Text messages can be sent to users via a specially formatted email address that's different for every cell service provider. For example, to send a text to a Verizon subscriber it'd be 5551239876#vtext.com. For this solution to work you'd need to send the message using some sort of automatically generated email address that you retrieve from a mail server you've created, and then you'd need to implement your own SMTP mailer on the device. Of course, a user can always request text message transcripts from their cell service provider (and some have easy access online) and there's no way around that.
How sensitive is this information? Email and text message aren't very secure protocols. You may want to consider alternative methods that provide encryption and authentication mechanisms.
No its not possible if you are using the built in mailer in iOS. Something you could do if you wanted to get around this would be to make a customer mailer, send the information to a server and send off the mail through code but this is quite a bit more work.

Facebook app invite from Ruby on Rails

Is there any way to post a Facebook application invite from Ruby on Rails, e.g. by deploying Koala?
Looks to be impossible at the glance. Any workarounds other than simply posting to a wall?
Actually mikeonrails gave a correct link - the Requests dialog is the way to invite friends to your app and send them other types of requests. It does require user interaction though (just as the video shows), for requests sent to users who don't have the application installed.
And now for the details. There are 2 types of requests that you can send:
user-generated requests: these can be sent to users who don't have the application installed (ie. application invite). They can only be sent using the Javascript SDK (or the iOS or Android SDKs but I don't think you're interested in those) and they do require user interaction. It will consist of a pop-up that will either display a selection (made by you) of his friends or a friend selector and a send button to send them your message.
app-generated requests: these can only be sent to users who have the application installed, but can be sent without user interaction.
The code for user-generated requests is like this (using the Javascript SDK):
// this will show the pop-up dialog with a friend selector
// add a `to: 'friend_id1,friend_id2` to skip the friend selector
FB.ui({
method: 'apprequests',
message: 'My Great Request'
}, requestCallback);
For the app-generated requests you can use Koala like this:
user = Koala::Facebook::API.new(user_token)
user.put_object("user_with_app_installed_id", "apprequests", {:message => "Would you like to be friends?")
So, the conclusion is that you cannot invite a user's friends to your application without his approval, but you can make it really simple for him to do it (2 clicks).
If you'd like to read more:
Requests Dialog: http://developers.facebook.com/docs/reference/dialogs/requests/
Social Channels: http://developers.facebook.com/docs/channels/#requests
You can use Facebook Chat API to send private messages, here is an example in Ruby using xmpp4r_facebook gem:
sender_chat_id = "-#{sender_uid}#chat.facebook.com"
receiver_chat_id = "-#{receiver_uid}#chat.facebook.com"
message_body = "message body"
message_subject = "message subject"
jabber_message = Jabber::Message.new(receiver_chat_id, message_body)
jabber_message.subject = message_subject
client = Jabber::Client.new(Jabber::JID.new(sender_chat_id))
client.connect
client.auth_sasl(Jabber::SASL::XFacebookPlatform.new(client,
ENV.fetch('FACEBOOK_APP_ID'), facebook_auth.token,
ENV.fetch('FACEBOOK_APP_SECRET')), nil)
client.send(jabber_message)
client.close
UPDATE: Facebook chat API has been deprecated so it is not possible to use this solution anymore.

Resources