this one is of clumsy implementation type and I have small knowledge about MS products.
Task: Access MS Exchange Server (outlook or whatever) and parse all unread emails with specific sent date, subject, from address. Certain data should be saved during parsing (like a flag/boolean array or something similar)
Requirements: should be done either through scripting language (no matter which one, looks like VBS suits this task) or any other method that will be able to perform slight analysis and return an exit code and a message (I'm thinking about web services that might exist in OWA, or any thing else).
Thanks in advance.
Use a driver or dll for you language of choice, I know C# / VB have libraries to accomplish this. A web server is fine if its going to not be a headache setting up access between servers, or if its on the same box with permissions.
Should do the trick, I would personally use C# as it would make this incredibly easy with the .net libraries and OLEDrivers.
Related
I recently started working at an IT company as a support agent and one of the things we do is managing the backup of our clients' servers.
It's all working nicely, but one part is just terrible, which is the backup log. The backup log is a excel file with a list of all the clients and for each of them a list of dates and whether or not the backup has succeeded on that date. The data in that document comes from emails rapports that are automatically sent when the backup finishes.
But here comes the bad part: Once in a week there is an employee who checks ALL THE EMAILS and manually fills the backup log. This was too much for me, especially knowing that we only have about 5 employees.
Solution: Make a script that does it for you. Yeah, I know and I think I'm capable of doing that, but there's a few things that I'm not sure about and I hope you guys could help me with it:
The mails are all in a different folders in an inbox that I had to add to my outlook manually and I don't know how I can programmatically reach it.
I don't know in what language I should use for this. I'm able to do it in a lot of languages, but I don't know which one suits this best
These are the only two things that I don't know and I would really appreciate it if you could help me with this.
EDIT:
The server is an exchange server with IMAP enabled. I eat java for breakfast and I've used JavaMail before, so I think I'll go with that, thanks
This is a pretty open-ended question....
You should pick a language that you're comfortable with and that has a good email support library, e.g., JavaMail for Java.
If the messages are in an Exchange server that has enabled IMAP support, you should be able to read the messages using JavaMail or any other library that support IMAP. If the server only supports the Microsoft proprietary protocol, you have fewer choices.
We really need to know more about the mail server you're using to offer much more guidance.
I am trying to get our iSeries 6.1 machine to send email through our Exchange server. I can do it with SNDDST and with SNDSMTPEMM, but both are very limiting. I need support for basic HTML, and for PDF attachments. I thought I could get them both from SNDSMTPEMM, but now I see that the body parameter for SNDSMTPEMM (NOTE) is limited to 400 characters. Is it possible that this command allows 10 attachments but less than a paragraph of text?
I would like to know if anyone is using this command, and if I am missing something about it that would allow me to create an actual email message.
If indeed I can't put more than 400 characters into the body of an email with this command, I have read about MMAIL and MAILTOOL and I am curious if anyone knows if this message length restriction exists for those as well?
It will be a very hard sell for our main programmer to install any third-party anything to get this working, so I would love to be able to do it with SNDDST of SNDSMTPEMM (or some other built in I haven't found yet).
I don't currently need to be able to send to multiple recipients, but I do need to be able to attach a couple of attachments (where SNDDST fails for me). I also can't use attachments with an *LMSG.
I'm sorry if this is the wrong place for this kind of post - I find it very difficult to find the right place.
The SNDSMTPEMM command is indeed limited to 400 characters in the message body, according to the documentation.
Where I work, we still mainly use MMAIL, which used to be free but now requires a $50 "donation" (and lots of hoops to jump through just to register). It doesn't have that message length limitation. It comes with several commands for ease of use, and a service program for more fine-grained control over how the message is built. Once you download it, you have access to the source, so you can really muck around with it if you have to. (The donation also allows you to download a multitude of other utilities from Easy400.net.)
A better but more expensive option is Bradley Stone's MAILTOOL. It's still competitively priced, as far as commercial IBM midrange software goes. If you go that route, it's probably worth getting the Plus! add-on, which side-steps IBM's native SMTP, a recurring source of headaches. (MMAIL and the basic MAILTOOL rely on native SMTP.)
The best place for this kind of post, at least for now, is the Midrange-L mailing list at midrange.com. When it comes to AS/400, iSeries, and IBM i stuff, that community is currently much more active than Stack Overflow, and they welcome open-ended discussion and "what do you recommend?" posts, which are discouraged here. You can find some discussion on the command you mentioned, and some alternatives, in this thread.
I want to download mails from all items and do some analysis on the mails. this will probably involve 2 distinct components.
download the mails using IMAP
parse unstructured data in the emails to extract information from them. no - its no the usual extract email adresses from the mails. probably quite a bit more complex than that.
i imagine a step involved would be converting it from MIME format to pure text. the parsing can probably be done after dumping all the emails into a database, but i dont want to lose any formatting or attachments present in the mail.
i would prefer to do it in .net, but am open to the best language tools available for the kind of work involved. have heard that perl is probably the best option for this kind of analysis.
thanks in advance
I actually just finished up a project very similar to this. I used WebDAV and .Net to accomplish this. I actually found a post on SO that was very very helpful: Read MS Exchange email in C#
I am working on an email polling solution, for a multi-user system. So users can send emails on their respective ids and it would be polled and inserted to a db.
There are two options that I am considering:
Perl/Unix based email pollers..
A java based poller.
What would you recommend.. (other suggestions are also welcome)
Instead of polling, why don't you forward the mail to a process? Depending on the mail server you use, you can do that as an alias or even in the .forward file.
I've nothing much to add to this, but there's currently a project at google code to rebuild iwantsandy.com as open source.
It's at:
http://code.google.com/p/sandysback/
I'm definitely going to be watching this to see how they parse emails, and have those emails "inserted into a db"
Whichever language you have most experience in!
I personally know java and perl well and for this task I would choose perl but the differneces are marginal.
Perl would be shorter and sweeter, java would be take longer but probably be a more robust solution once the database access is sorted out.
I find Perl DBI is a better and more portable database interface than JDBC which does not hide database implementations from your code and is sensitive to version changes etc. I.E. you must have the right version of the right database driver for your target database.
RE: Poling
If you have the option to forward the email to a process I would highly recommended you do that. (Forwarding generally puts less load on the server than poling does.) If not, then poling is the next best thing. Look into the POP3 client libraries on whichever language you are most comfortable with.
RE: Language choice
If I intended to do a lot of parsing of the emails then Perl would be my choice. If not much parsing is involved then Java would be the way to go for me ;-).
-- In a former life I wrote a Perl script to parse (well structured) incoming emails into HTML pages and post them to a web server.
You have a couple of options. As the orginal poster said - probably the simplest way is to set up an entry in the aliases file to a script.
Then the body of the email gets passed as standard input to the script. You can then use a perl script + Mime modules to parse out the bits of the message and do whatever you want with it.
One might also look at apache james - which is a custom mail server. They have the equivilent of servlets, called 'maillets' that you put your business logic in. They often hard to deploy in enterprise scenario's though as most companies don't like having custom mailservers being deployed.
... the aliases route is probably your best bet. one other note of caution - email isn't gauranteed. if you are using this as some sort of app to app messaging system, and you control both ends, you should probably look at something else, like JMS type messaging.
-Ace
I would like to write a plug-in that will allow a custom written CRM to read and write to their local Outlook client. I know that this poses a security concern. But, my clients are asking that their CRM "be connected" to Outlook. They would like to be able to do the following:
A) When a contact sends them an email (reply or free standing email), they'd like the details of this email to go INTO the CRM. Yep. They would like me to save the body, time and date it was sent, etc.
B) They want to be able to send new emails (or replies to existing emails) from within the CRM itself. Basically, "a form that looks like Outlook's send/reply email form".
C) Want the ability to search for contacts and the related emails with a search for tags/keywords facility. (i.e. if a product name or code appears in an email then they want the email returned in the search).
D) Having performed a search of many contacts, they will want to prepare a mailer and shoot out some sort of email announcement to their qualified leads. This could be 50, 100, or more persons. So its got to be able to allow bulk mailing.
E) Given a list of new prospects, that arent currently contacts in the CRM, they will want to do the same and if they get replies from this mailer to the prospects, the will want the replies to be saved in the DB and contacts be inserted into the DB.
F) They would like to be able to utilize the calendar and task list facilities of Outlook from the CRM, as well.
More or less, they want this pretty basic (as it is today) CRM that I created to integrate with Outlook and have it do so seamlessly as if it was an add-on to the CRM. A plug-in is what I am thinking...
But, I dont know where to begin. My environment is Windows XP/Vista and is going to be ASP.NET and I am going to use the VB.NET language to accomplish this. What do I need? Are there resources out there that can describe how to build a plug-in to Outlook as I have been asked to? This is not Exchange, none of the clients use exchange (not so far). They all run Outlook. Mostly 2003. Most clients are XP right now but some are upgrading to Vista.
For some reason I cant seem to wrap my head around this. I think the whole security issue is thwarting my ability to see past what is probably a simple thing. The client doesnt want to be prompted by any security messages asking them if they are sure they want to send 382 emails to their contacts. Not once and certainly not 382 times.
Where do I begin? I've searched the internet for similar but mainly what I found are already-written products and I've got to write this from scratch.
I was part of the team that created the original Outlook Plug-In for Frankley Covey time management tools. It was quite an adventure!
The first thing I would do is make your client pick a version of Outlook, and stick with it. DO NOT let the client add support for additional Outlook versions, unless they are willing to pay for it, and willing to have the delivery time pushed back to a reasonable date.
The team I was with swore by the Slipstick website. There are several solutions to the Outlook security prompts in there.
If you can, talk to Microsoft and see if they can get you the object model for the specific version of Outlook you will be working with. We had this model printed on a large scale color printer and put it on a large wall. IIRC, it was something like 7'x5' object map. This helped tons.
You might end up creating specific classifications/namespaces for your Outlook code. It's been a while, but I remember something about a dot notation like .Email, .Task, and several others. I had to create a couple new dot namespaces for the Outlook Task object.
As razorfish noted, look up the new Visual Studio For Office Tools. This has made some stuff a lot easier.
Talk to your client and find out if they will need to connect to Exchange servers. There were two distinct ways of building Plug-ins. One mode only worked with Outlook itself, while the other talked with Exchange. This is very important to your development efforts. The models are VERY different and will cost you extra time if you pick the wrong one.
EDIT: There are a couple books that were helpful with this. The books are for Outlook 2000, so you might want to see if there are updated versions.
Building Applications with Microsoft Outlook 2000 Technical Reference
Building Applications using Outlook 2000, CDO, Exchange, and Visual Basic
Both have a lot of information on how to do deep integrations with Outlook.
You should take a look at the Visual Studio for Office Tools. You can easily create add-ins for Outlook, Word, Excel ... pretty much the entire Microsoft Office family of products.
You can also take a look at Add-In Express, but I didn't have much luck with their controls, and the VSTO for 2008 is extremely easy to use.
Check out Kayxo Insight. It's a framework for creating the kind of solution you are describing.
Check out www.softomate.com they offer plugins and integration solutions for various projects.