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

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube