*There is a requirement to send single and bulk e-mails, and track received e-mails from a POP3 account.*
*The project will be a prototype and will be integrated into a complete system at a later date.? The primary focus of this project is to produce a dll which can be integrated at a later date, however, for testing purposes it may be necessary to create a test harness / application.? *
*It should not be necessary to persist any data to a database...all data should be stored in dataset (it is only a prototype after all!).*
## Deliverables
Email
**Version:? ? ? ? ? ? ? ? ? ? ? ? ? ? ** *1.0*
**Author? :**? ? ? ? ? ? ? ? ? ? ? ? ? ? *Stuart Johnstone*
?
## Introduction
There is a requirement to send single and bulk e-mails, and track received e-mails from a POP3 account.
The project will be a prototype and will be integrated into a complete system at a later date.? The primary focus of this project is to produce a dll which can be integrated at a later date, however, for testing purposes it may be necessary to create a test harness / application.?
It should not be necessary to persist any data to a database...all data should be stored in dataset (it is only a prototype after all!).
## None Functional Requirements
·? ? ? ? ? ? ? ? Written in C# and Asp.net (using .net 3.5)
·? ? ? ? ? ? ? ? Good comments throughout
·? ? ? ? ? ? ? ? No 3rd party products should be used
## Requirements
### Single e-mail send
Must be able to specify and select from all the usual e-mail options including
·? ? ? ? ? ? ? ? To (with ;’s separating names)
·? ? ? ? ? ? ? ? CC
·? ? ? ? ? ? ? ? BCC
·? ? ? ? ? ? ? ? Subject
·? ? ? ? ? ? ? ? Attachments
·? ? ? ? ? ? ? ? Message (in HTML format ??" with embedded images)
·? ? ? ? ? ? ? ? Option to request a request a Delivery Receipt
·? ? ? ? ? ? ? ? Option to request a request a Read Receipt
Any errors during sending should be thrown as an exception
### Bulk e-mail send
Using the same or similar code for sending a single email, we also need to be able to send bulk e-mails.? The code for this will be performed by a windows service with the results being recorded in a dataset with 6 status’s/options (In-Progress (e.g. not sent yet), Unopened (e.g. sent but the user hasn’t done anything with it), Opened, Clicked Link, Bounced, Unsubscribed) with their IP address (if possible).
·? ? ? ? ? ? ? ? Facility to unsubscribe (A hyperlink at the bottom on the link that sends their e-mail address and the campaign id)
·? ? ? ? ? ? ? ? Suitable code ? to stop specified SMTP server for being blacklisted
·? ? ? ? ? ? ? ? Tracking of opened e-mails
·? ? ? ? ? ? ? ? Tracking of hyperlinks contained within the sent e-mail
·? ? ? ? ? ? ? ? Tracking of Bounced e-mails (e.g. address doesn’t exist)
### Receive e-mail
There should be a windows service to read e-mails from a specified pop3 account(s).? For the purposes of the project it is sufficient to populate incoming data into a dataset.? Once read an e-mail should be left on the server if the option is selected.? An e-mail should only be downloaded once e.g. like Outlook once downloaded it won’t download it again.
Attachments should be downloaded to a folder and a hyperlink(s) to the file included in the dataset.
### Other
Must be able to specify account details etc.
?
## Class Diagram
email
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? account
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pop3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? servername? ??" the name of the pop3 server
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? port ??" the name of the pop3 port
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? username
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? password
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SPA ??" option to use Secure Password Authentication
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SSL ??" option to use an encrypted SSL connection
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? smtp
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? servername? ??" the name of the smtp server
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? port ??" the name of the smtp port
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? requiresAuthentication ??" if the SMTP server requires authentication
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? username
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? password
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? leaveMessagesOnServer ??" Option to leave messages on the server
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? removeAfterDays ??" Option remove them after x days
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SPA ??" option to use Secure Password Authentication
e-mail address ??" the e-mail address to send from
Fromname ? ??" test to say who its from
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TestAccountSettings() ??" method that:-
1.? ? ? ? ? ? ? Checks that the supplied settings are valid e.g. required details are completed
2.? ? ? ? ? ? Checks that it can login to the server(s)
3.? ? ? ? ? ? Checks that it can send an e-mail
4.? ? ? ? ? ? Returns a dataset/collection of any errors
email
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SingleSend() ??" Parameters:-
1.? ? ? ? ? ? To ??" who it’s going to separated by ;s
2.? ? ? ? ? ? CC - who it’s CC’s to
3.? ? ? ? ? ? BCC ??" who it’s BCC’d to
4.? ? ? ? ? ? Subject ??"
5.? ? ? ? ? ? Attachments ??" A string collection containing the path to the file(s)
6.? ? ? ? ? ? Message ??" In HTML format
7.? ? ? ? ? ? Request Read Receipt
8.? ? ? ? ? ? Request Delivery Receipt
Read() ??" Method for reading e-mails with the following parameters:-
1.? ? ? ? ? ? maxitems? -? Specify how many items to download ? -you don’t want the service to be tied up for hours just downloading on users mailbox.
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?