I have developed a certain system (with Classic ASP and MSSSQL 2012) for managing customer files for an insurance company.
Among other features, the system should be able to let the user set an automatic email message to be sent out to a defined email address at specific date and time.
After trying to achieve this goal with the native service of Scheduled Tasks on the server, and finding it very unreliable, I am looking now for an external service.
The "holy grail" for me will be to find a service much like FollowUpThen, which provides the option to send an email message at a specific date and time in a very simple way.
The problem with their service is that you cannot define the email addresses where the message will be sent to, so that's a "game killer" for me, unfortunately.
So, basically I am currently looking for a service that will allow me (programmaticaly) to send out scheduled email messages.
Any kind of help in this matter would be greatly appreciated!
Iterable.com supports scheduling an email for delivery up to 365 days in the future. See https://api.iterable.com/api/docs#!/email/target_post_0
Please note that the content of the email is set at the time you schedule it, not on the scheduled delivery date.
Related
Here is the reason for my peculiar question:
I am working on a mortgage application for a mortgage broker where each mortgage application is a record. Now this broker will take each of the applications he has received and enter this application (in an up line lender's system) and during the life of this mortgage application, he receives notification emails about updates from the up line lender.
It is required that in this application, all emails pertaining to a particular mortgage application are visible under that record.
My plan is to have all emails collect in a single inbox, and give that inbox an alias corresponding to the record id of the mortgage record. The alias remains active as long as the mortgage application is active and the broker cares for receiving these updates. Once the mortgage application record is dead, that alias is removed.
When displaying the particular mortgage record, I can query the mail server for the emails where the to address is the alias of that particular record.
My key requirements are:
The email server or email service should allow for about 400-500 aliases at a time.
Should have an API interface for creating and deleting an alias.
As far as the creating/deleting API is concerned, Google Apps (https://developers.google.com/admin-sdk/directory/v1/guides/manage-user-aliases) really fits the requirement, but has a 30 alias limit.
Does Microsoft Outlook online mail support this kind of API and ability to create mailbox alias?
If we went in the direction of having a Microsoft Exchange Server 2010/2013, would it allow programmatic access to create aliases? What would be the license cost?
Thanks in advance for looking this up.
With update from #mti2935, I am considering a catch-all solution rather then deal with creating aliases.
So, now I think all I need is to be able to process the emails. What's the best means of processing emails (in my case, I will simply have to look at the "to" field and put the emails in different buckets).
I have found a third party service that can help me parse emails. Definitely going to try that out and provide an update here.
Service: https://postmarkapp.com/inbound
Referenced by a post on: How to setup a mail server?
One option to consider is to setup a mail server using qmail, configured as a catch-all for your domain, such that all mail to *#yourdomain.tld forwards to a script which parses each incoming message, scrapes the to, from, subject, etc. logs the messages in your database, etc. It's easier than it sounds to setup. See How to setup a mail server?. This can be done fairly inexpensively on a Rackspace or AWS cloud server.
With regards an OMS, what is the best method to send a confirmation email? The 2 options I have so far are;
A script on the order page sends an email once the record is written to the database.
A scheduled task on the server, send the email, polling the database every-so-often to find new entries.
Which method do systems currently use?
For e-commerce websites, it might be better to think about the best user experience.
Given that, you would want to send the email as soon as the order is received so the user knows that they have purchased the item. The sooner it gets into their inbox, the sooner they will be happy that they have made their purchase.
I agree with Digbyswift that sending the confirmation email once the record is written to the database is the least scalable. But I would argue that if your system has gotten to the point that you are taking so many orders that your system cannot keep up, you have a wonderful problem on your hands that you now probably have resources to handle.
At PostageApp, we handle the emails of a few e-commerce websites, so perhaps you would benefit from an arrangement with an email service provider to off-load this task so that all of your resources can be spent on keeping your site up and your databases running.
Here are some great alternatives if PostageApp is not your style:
Sendgrid
Postmark
Mailjet
This is a question of scalability. Sending a confirmation email once the record is written to the database is the least scalable. The more orders that are taken , the more emails are sent potentially tying up resources.
A scheduled task is certainly better as emails can be queued up and can be sent in a separate process.
A further option which you could consider is using neither and delegating the responsibility of sending emails to a 3rd party dedicated emailing service, i.e. via an API. This is much better since your hosting does not have to consider the load and you can utilise any reporting offered by the 3rd party. Plus many services offer a free quota up to a certain threshold. This will allow you OMS and business to scale appropriately.
If you apply a message based architecture; you could just publish an order created message and have any number of subscribers respond to that event. You could create a listener that sends the email in house (bespoke option) or another listener that called the API of a 3rd party emailer to send the email on your behalf (as per #Digbyswift)
What I've always liked about this approach is
You can have any number of listeners live at any one time.
You can create a new listener and change how you send the email without needing to change/redeploy the OMS application itself.
You can take the listener(s) off line and stop / delay the sending of the email without losing any notifications or affecting the OMS itself.
Currently in our application admin of a company invite multiple users to system. Our design is:
take admin chosen separated email addresses, check user if exist and member of current company do nothing. if exist but not member of current company do some setup and add to company and send welcome email. if not not exist set user account add to company and send invitation email. But there is a hard roadblock. Admins want to invite up to 5000 emails. Because of currently we invite in web application and send email one by one (we have to, because of uniqueness and activation code) admin can't invite more than 20-30 emails at same time, because of timeout.
I thought to take email to another table and do operation with timer?
What is the best practice for this ?
Enviorenment
ASP.NET MVC2 on amazon-ec2 server. Also we have timer quartz.net
I come from a linux/PHP background but it seems to me your problem can be solved with a queue?
You basically get all the emails you need sending add them to the queue and have another process take a few emails off the head of the queue and send. Rise, repeat until queue is empty.
Since you are on EC2, have you taken a look at how Amazon SQS might be able to help? If you want a readymade component, I googled and found this email queue component for asp.net that seems to solve the exact problem you are having (although will cost you $)
I am trying to have a kind of observer pattern in ColdFusion
We want to listen to the incoming Email messages and act on them. Scenario is something like this :
Application sends email to the helpdesk system
Helpdesk system automatically generates a ticket and responds with an email to the email address of the application
The application's email is configured in the Lotus notes
Now the application should listen to this incoming email message, decode that and update the coressponding ticketid
I see there is a possibility with Event Gateways, but I am unable to realize the whole picture.
Thoughts or suggestions?
One way is to setup an email server with IMAP support, and use some sort of polling (every minute, good enough?) in CF using <cfimap> to get the emails.
http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WS371453EC-36D5-44ce-BF1E-750E3016BBD6.html
We have a system like this.
We have a postfix server configured to handle mail for a domain. A small script (Perl) on the postfix server places each email on an ActiveMQ queue.
We have a cluster of CF boxes with the ActiveMQ event gateway listener that takes the messages off the queue and processes them using Java Mail.
The delay between postfix receiving the email and a CF server processing it is generally under 1s.
We needed to do it this way for a number of reasons, processing delay being one of them, dealing with a large cluster of CF which made the POP/IMAP solution complicated, and CF's mail handling not being quite what we wanted were others.
It works great.
I've created similar applications in the past using cfpop to interogate a mailbox on a scheduled basis.
It was pretty easy to write, but usually gets thrown for a loop when "users" start being "helpful" with the email content.
The other thing is that this isn't instantaneous, but is the process really time critical to the second?
The company I work for has consultants that work off site. Because of policy we are not allowed to set up email forwarding so these users can receive their email. Obviously this is a problem as these users may miss important email. Can anyone recommend a way that we could inform these users they have email waiting for them?
If they have cell phones on their person you could send them an SMS. I'm not sure how you would hook up to that but you would want to have some kind of SMPP service from whichever provider you can find. With SMPP you can actually re-encode the email and send it that way. For users with Blackberries it wouldn't be too painful to read emails that way.
Could you set up a system to send them an email to let them know they have an email waiting for them? Similar to what banks do to let you know you should log on to your account, without sending any actual information in the email?
Whoever came up with this policy should be made responsible for coming up with a solution for the off-site consultants. Policies like this that are in conflict with technical reality should be re-evaluated; there is no harm in asking for an exception for a limited amount of time given the circumstances.
Note that any other solution amounts to an 'end run' around the policy, violating the spirit of the policy if not the letter of it as well. If the policy exists for 'security' reasons, then the 'security' experts will need to come up with an alternative. If you just bypass the policy and something goes wrong it could be very bad for all involved.
I would think that the best thing to do here is see if you can change the policy. If you cannot email your consultants due to some policy then it is the policy that is preventing you doing your job correctly, not a technical issue.
I'm sure these consultants have their own email accounts (be it through their consulting firm or personal). So just email them the necessary messages to those accounts.
Why can't you just send an email to their 'normal' email address?If not, a phone call works and offers a good time to connect, chat and discuss status.
I fail to understand if the consultants are using your company email address or do they have their own email address which they use when conducting the consulting business with other company s.
I had a similar problem where I had to check emails when off site and this was a 24/7 support gig. I had to build a an app where my emails would be piped into a php scripts and sent as a sms and this script ran only 22h00 - 07h00 other wise it would use a normal forwarding to my email.
The other option, use cellphones which support pop3 mail protocol and they can be configure to check at intervals and download snapshot of the email....
sms script is very nice tool to have for a 24/7 support type of environment other wise I would recommend the second option(The cell phones)