This was an odd one that came up during a recent project. My colleague Kevin had activated our standard Keystone workflow email notifications and configured the SMTP settings for the Sitecore application.
A short workflow test later and not only were emails not going out but an error was occurring with the message: “The device is not ready”. What is going on? Why is an IO error being thrown?
Upon investigation, I found some .NET SMTP settings had been added to the Sitecore Web.config. Specifically, a specifiedPickupDirectory setting.
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="specifiedPickupDirectory">
<specifiedPickupDirectory
pickupDirectoryLocation="c:\maildrop"
/>
</smtp>
</mailSettings>
</system.net>
</configuration>
In all my years I had never seen anybody configure SMTP to drop messages to the file system for processing. I didn’t even know the SMTP client could be configured this way!
The error occurs if the value specified for the pickupDirectoryLocation property cannot be accessed. In our scenario, it was referencing a drive which did not exist on the system, hence the error.
The fix is pretty easy…
- Send SMTP directly, not using this setting, OR
- Make sure the setting is a valid path

Leave a comment