DevDisasters

OldMail Method

After three long interviews for a .NET developer position, Maxim received a fairly generous offer and accepted it on the spot. "Now, I don't mean to scare you off," Maxim's soon-to-be boss told him. "But the fella you're replacing was good. I mean, really good. He could code his way out of anything, and I just don't want you feeling overwhelmed when you come in and people are expecting the world from you."

Maxim was a little anxious, but he felt comfortable standing on the shoulders of giants. After all, it was a great opportunity for him to learn how his predecessor did things.

When his first day on the job finally came, Maxim loaded up the "Developer Workstation" instructions and proceeded to follow the steps needed to get the company's flagship application running on his computer.

As he made his way through the document, there was one step that completely threw him off: "To make sure that e-mails can be sent, install ClickYes, which can be found on the T: drive."

Problematic Execution
Maxim had no idea why such a dependency existed for sending e-mail, so he dug into the CommonUtils class and navigated to the SendEmail() function. What he found horrified and amazed him.

With the change log and source control history, Maxim was able to reconstruct the trials and tribulations his predecessor, "the .NET whiz," must have gone through to finally master programmatic e-mail.

2004-12-02 13:29 Check in code that does the following: Programmatically execute outlook.exe and wait five seconds for it to load up. With the outlook process in the foreground, send the following keystroke combination to outlook: {ctrl+n}, [email protected], {tab}, {tab}, Some Subject Line, {tab}, The Message Body, {ctrl+enter}. Close the outlook process.

2004-12-02 14:07 Deploy to the server and learn that it doesn't work so well. Go back to the drawing board.

2004-12-03 11:18 Check-in a custom e-mail class that wraps around the CDONTS [Collaboration Data Objects for Windows NT Server] library.

2004-12-03 12:39 Deploy to the server and learn that, because it's Windows 2003, it doesn't have CDONTS installed. Go back to the drawing board.

2004-12-06 13:36 Check-in another custom e-mail class that interops the Microsoft Outlook automation objects.

2004-12-06 13:51 Deploy to the server and learn that Outlook has an anti-hijacking feature that requires the user to click "Yes" to send an e-mail. Learn that, as a Web app, the Web user isn't presented with a dialog window that pops up on the server.

2004-12-07 07:18 Check-in an attempt to automatically click yes.

2004-12-07 09:03 Check-in another attempt to automatically click yes.

2004-12-07 10:28 Check-in yet another attempt to automatically click yes.

2004-12-07 16:22 Install, on the server, a newly purchased program called ClickYes that automatically clicks "Yes" to those dialogs.

NewMail Method
Instead of going through the trouble to install ClickYes on his workstation, Maxim decided to make one more revision to the SendEmail method.

2009-08-10 11:31 Replace entire method body with a call to SmtpClient.SendMessage in System.Web.Mail.

After that, Maxim was no longer worried about being dwarfed by the .NET whiz.

About the Author

Alex Papadimoulis lives in Berea, Ohio. The principal member of Inedo, LLC, he uses his 10 years of IT experience to bring custom software solutions to small- and mid-sized businesses and to help other software development organizations utilize best practices in their products. On the Internet, Alex can usually be found answering questions in various newsgroups and posting some rather interesting real-life examples of how not to program on his Web site TheDailyWTF.com. You can contact Alex directly via email at [email protected].,

comments powered by Disqus

Featured

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

  • .NET 9 Preview 3: 'I've Been Waiting 9 Years for This API!'

    Microsoft's third preview of .NET 9 sees a lot of minor tweaks and fixes with no earth-shaking new functionality, but little things can be important to individual developers.

  • Data Anomaly Detection Using a Neural Autoencoder with C#

    Dr. James McCaffrey of Microsoft Research tackles the process of examining a set of source data to find data items that are different in some way from the majority of the source items.

  • What's New for Python, Java in Visual Studio Code

    Microsoft announced March 2024 updates to its Python and Java extensions for Visual Studio Code, the open source-based, cross-platform code editor that has repeatedly been named the No. 1 tool in major development surveys.

Subscribe on YouTube