Glasses on top of laptop keyboard

Sitecore SMTP messages throw “device not ready” error

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…

  1. Send SMTP directly, not using this setting, OR
  2. Make sure the setting is a valid path
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s