I have searched web for proper “Email to Case” agent tutorial but didn’t find enough information so decided to write my own one. Many of you already knows that we have “On – Demand” email to case, so what is need of this Agent? However there are existing client which are already using this toolkit and that why sometimes they need support for it.
Why Email to case Agent ?
- Email to case agent is installed on your local/Server System. It fetches message from your email Server (Email address dedicated to Email to Case), Process it and creates Case records inside Salesforce.
- As we know that there is limit of attachment size in Case, so using this Agent we can save that attachment on Local / Server hard drive.
Pre-requisite for Email to case Agent:
- JDK 1.5.0_06 or later.
- Email to case agent (Download from -http:// wiki.apexdevnet.com /index.php / Members : Email_To_Case )
- Make sure Email to Case is enabled in Salesforce.
- One Email Account which supports IMAP Protocol.
Now extract, Email to case agent downloaded from above URL.
In folder “EmailAgent” you will find below important 3 files:
- email2case.bat (To run Email-to-Case Agent we need to click on this batch file)
Configuring “email2case.txt” :
<configFile> <server1> <url>your.EmailServer.Path</url> <protocol>imap</protocol> <userName>emailtocase@YourEmail.in</userName> <password>YourPassword</password> <interval>1</interval> <inbox>Inbox</inbox> <readbox>Inbox.testNestedProcessing</readbox> <errorbox>Inbox.testNestedError</errorbox> </server1> </configFile>
|URL||Name of the mail server to connect with|
|PORT||The port to connect to on the Mail Server - optional Default port 143 will be used if not provided.|
|PROTOCOL||IMAP, but if you want to connect to SSL encrypted IMAP Servers (like e.g. GMAIL) use IMAPS and the PORT 993, may support others in the future.|
|USERNAME||Name of the user that will login to the mail server. Typically, the name of the email account, like platinumsupport.|
Note: Exchange may require the following format - userid@domain (as opposed to server\name or just name.)
|PASSWORD||Password to authenticate the user against the mail server|
|INTERVAL||time interval in minute to fetch message from Email Server|
|INBOX||Name of the folder to look for new messages in|
|READBOX||Name of the folder to move messages to after they have been processed.|
|ERRORBOX||Name of the folder to move messages to in the event of an error. If the agent cannot successfully execute a transaction with the sfdc server, messages will be moved to this folder so that manual action can be taken if necessary (requeueing etc...).|
Note: If you want to nest folder names, be sure to either use the delimiter that is supported by your mail server for separating folders(often '/' or '.' or you can always use '.' and the agent will convert to the correct delimiter supported by your mail server at runtime.
Configuring “sfdcConfig.txt” :
<configFile> <sfdcLogin> <url>https://www.salesforce.com/services/Soap/u/9.0</url> <userName>SalesforceUserName</userName> <password>SalesforcePassword</password> <loginRefresh>30</loginRefresh> <timeout>600</timeout> </sfdcLogin> <notify> <notifyEmail>jitendraZaa@gmail.com</notifyEmail> <from>firstname.lastname@example.org</from> <host>Email Server Host</host> <port>25</port> <user>email@example.com</user> <password>PasswordofEmail</password> <service>com.sforce.mail.SMTPNotificationAuth</service> </notify> <attachments> <largeAttachmentDirectory>C:\\Users\\JitendraZaa \\Downloads \\EmailAgent \\Attachments \\</largeAttachmentDirectory> <largeAttachmentURLPrefix>file:\\C:\\Users \\ JitendraZaa \\Downloads \\EmailAgent \\ Attachments\\</largeAttachmentURLPrefix> <largeAttachmentSize>0.5</largeAttachmentSize> </attachments> <services> <com.sforce.mail.EmailService>C:\\Users \\JitendraZaa\\ Downloads\\ EmailAgent\\ email2case.txt </com.sforce.mail.EmailService> </services> </configFile>
|NOTIFYEMAIL||Email address of person to send notification to in event of a problem. To send to multiple recipients, separate addresses by commas.|
|FROM||Sender Address of above.|
|HOST||SMTP Host for Email, or is using Notification extensions this can be any other type of host you need.|
|PORT||SMTP Port for above host - optional. Default port 25 will be used if not provided.|
|USER||For SMTP, this is the user needed for SMTP to authenticate.|
|PASSWORD||For authentication, if needed.|
|SERVICE||The class to use for invoking notifications. |
The provided class, com.sforce.mail.SMTPNotification, is for sending Email notifications via SMTP. Another class is also provided for use with SMTP servers that require authentication (e.g. Yahoo, Hosted Mail Providers).
This Class, com.sforce.mail.SMTPNotificationAuth does require the user and password parameters to be provided The architecture is designed such that another class could be used in its place for other protocols as desired SMNP, JMX etc... To do this, subclass com.sforce.mail.Notification.
Large Attachment processing:
Salesforce.com has a limit on the size of attachments for any single case. When an attachment exceeds this limit, the creation of a case for the email fails and an error is generated. To prevent this from happening, and to manage the storage of large attachments, the files can be stripped from the email they are attached to, and stored on a file system that you specify. Here are the settings that you must configure to activate this optional feature.
|largeAttachmentDirectory||This is the high level directory where you want to store the attachments. Subdirectories will be created each day an attachment is processed.|
|largeAttachmentURLPrefix||This is a url which will prefix a unique filename stored in a proxy file that points to the real file so that you can link to the file from the Salesforce application|
|largeAttachmentSize||Specified in MB, this is the threshold at which the agent will strip attachments and copy them to disk.|
Youtube Video Tutorial of Email to Case Agent :