Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Send Email without Mail ServerHow to send an email without a mail server (so-to-speak).
LOCAL loMailman LOCAL lcRecipient LOCAL lcSmtpHostname LOCAL loEmail LOCAL lnSuccess * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * Is it really possible to send email without connecting to * a mail server? Not really. * When people ask 'Do you support sending email without * a mail server'? what they're really asking is: 'I don't * have an SMTP server, and I want to send email. I see * other components available where it's not necessary * to specify an SMTP server. Does your component have that * ability?' In short, the answer is Yes. But you need * to understand some things before you jump in... * Here's what happens inside those other components * that claim to not need a mail server: The component does * a DNS MX lookup using the intended recipient's email address * to find the mail server (i.e. SMTP server) for that * domain. It then connects to that server and delivers the * email. You're still connecting to an SMTP server -- just * not YOUR server. * Chilkat provides an MxLookup method where you can lookup * the SMTP hostname that services any given email address. * You would then assign the SmtpHost property to this value. * Chilkat can then connect directly to the recipient's mail * server and deliver the email. * There are a few gotcha's though... * First, if you're writing an application that is widely * distributed, your app might be running within a network * that blocks outgoing connections to the SMTP port. * Earthlink, for example, is one major ISP that does this. * When you are connected to the Internet via Earthlink, * your apps can *only* connect to Earthlink's SMTP server * and will not be able to reach any remote servers. To send * email, you must use Earthlink's SMTP as a relay. This is * common with ISPs. So... if your application is coded * as in this example, it will not work within those networks. * * Second, some SMTP servers will reject unauthenticated * sessions attempting to send email from dynamic IP addresses. * You may see this error in your LastErrorText: * 553-Your attempt to send email to us has been blocked * 553-because your email server is not currently on that domain's Accepted * 553-Senders list. To request addition to their Accepted Senders list, * 553-please navigate with a Web browser to the following URL: * 553-http://reportrbl.gate2service.com/Whitelist/?IPAddress=67.173.123.150 * 553 See http://www.dnsbl.us.sorbs.net/ (dul) * In a nutshell, just because you were able to do the MxLookup * and connect to the recipient's mail server, doesn't mean * you'll be able to send email -- it depends on the IP address * from which you're connecting. * Finally, the DNS lookup is potentially time consuming. * In addition, you cannot use somebody else's email server * as a relay, so if you're connecting to smtp.xyz.com, you * can only send email to email addresses at xyz.com. * To send email to 3 recipients at different domains means * making 3 separate connections to 3 separate SMTP servers * to send the email one at a time. * The mailman object is used for sending and receiving email. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.MailMan') loMailman = CreateObject('Chilkat.MailMan') lcRecipient = "admin@chilkatsoft.com" * Do a DNS MX lookup for the recipient's mail server. lcSmtpHostname = loMailman.MxLookup(lcRecipient) IF (loMailman.LastMethodSuccess <> 1) THEN ? loMailman.LastErrorText RELEASE loMailman CANCEL ENDIF ? lcSmtpHostname * Set the SMTP server. loMailman.SmtpHost = lcSmtpHostname * Create a new email object * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Email') loEmail = CreateObject('Chilkat.Email') loEmail.Subject = "This is a test" loEmail.Body = "This is a test" loEmail.From = "My Name <myname@mydomain.com>" loEmail.AddTo("",lcRecipient) lnSuccess = loMailman.SendEmail(loEmail) IF (lnSuccess <> 1) THEN ? loMailman.LastErrorText ELSE ? "Mail Sent!" ENDIF RELEASE loMailman RELEASE loEmail |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.