On Wed, 30 Mar 2016, at 12:43 PM, Ted Roche wrote:
> On Wed, Mar 30, 2016 at 7:02 AM, Laurie Alvey <[email protected]>
> wrote:
> 
> > I currently use CDO to send email from my apps but I'm thinking of using a
> > .NET component to do it.
> 
> May I ask, "Why?"
> 

Well, CDO is tied to Exchange Server and to my mind is gradually being
deprecated.

To answer Laurie's question, I had a similar requirement recently and I
achieved it by writing a .NET solution that uses the System.Net.Mail
namespace and the SMTP functionality therein. It basically creates a
fairly 'flat' interface, i.e.

SmtpEmailer.AddAttachment(string) 
SmtpEmailer.AddLinkedImage(string) 
SmtpEmailer.AddRecipient(string, string, string) 
SmtpEmailer.BuildImageTag(string, string) 
SmtpEmailer.Dispose() 
SmtpEmailer.Dispose(bool) 
SmtpEmailer.SendMessage() 
SmtpEmailer.SetBody(string) 
SmtpEmailer.SetBodyFormat(string)
SmtpEmailer.SetCredentials(string, string, string) 
SmtpEmailer.SetFrom(string, string) 
SmtpEmailer.SetPriority(string) 
SmtpEmailer.SetSubject(string) 
SmtpEmailer.SmtpEmailer() 
SmtpEmailer.StartMessage() 
SmtpEmailer.BodyText 
SmtpEmailer.EnableSSL 
SmtpEmailer.ExceptionMessage 
SmtpEmailer.LastException 
SmtpEmailer.LastStatusCode 
SmtpEmailer.Port 
SmtpEmailer.Server 
SmtpEmailer.StatusCode 
SmtpEmailer.TimeoutSeconds 
SmtpEmailer.Version

This handles HTML mail with inline images (and automatically generates a
text version too). Also SSL.

So that spits out a DLL, how do I use that from VFP? You could create a
COM wrapper for it, but that woudl then involve building an installer
and everything that entails.

What I do is use Rick Strahl's wwdotnetbridge class which allows the use
of .NET assemblies directly from VFP with no installation (other than
.NET 4.0 or later being present). This means 'xcopy' deployment and no
messing with COM. Given the .NET DLL above and the relevant files for
wwdotnetbridge in the same folder, you can just use this to send an
email from VFP:

        DO wwDotNetBridge
        LOCAL loBridge as wwDotNetBridge

        loBridge = GetwwDotnetBridge()
        loBridge.LoadAssembly("my_dotnet_smtp.dll")     && -- The .NET
        DLL 

        Local loW as my_dotnet_smtp.SmtpEmailer
        loW = loBridge.CreateInstance("my_dotnet_smtp.SmtpEmailer")
        loW.EnableSSL = .t.
        loW.Port = 587
        loW.Server = "my.smtpserver.com"
        loW.SetCredentials("username", "password", "")
        loW.StartMessage()
        loW.AddRecipient("[email protected]", "Alan", "")
        loW.SetSubject("Here's an email.")
        loW.SetBodyFormat("HTML")
        lcLogoCID = loW.AddLinkedImage("c:\temp\logo.jpg")
        lcMyHTML = "<p>Title text</p>" + loW.BuildImageTag(lcLogoCID,
        "logo")
        loW.SetBody(lcMyHTML)
        loW.SetPriority("HIGH")
        loW.SetFrom("[email protected]", "Your Name")

        try
                if !loW.SendMessage() 
                        ? loW.ExceptionMessage
                    ? loW.StatusCode
                EndIf
        Catch to loException
                        ? loW.ExceptionMessage
                    ? loW.StatusCode
        Endtry
        loBridge.Unload()
        Release loBridge


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/1459340730.3223457.563514594.25c26...@webmail.messagingengine.com
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to