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 Basic 6.0) Send Email without Mail ServerHow to send an email without a mail server (so-to-speak).
' 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. Dim mailman As New ChilkatMailMan Dim recipient As String recipient = "admin@chilkatsoft.com" ' Do a DNS MX lookup for the recipient's mail server. Dim smtpHostname As String smtpHostname = mailman.MxLookup(recipient) If (mailman.LastMethodSuccess <> 1) Then Debug.Print mailman.LastErrorText Exit Sub End If Debug.Print smtpHostname ' Set the SMTP server. mailman.SmtpHost = smtpHostname ' Create a new email object Dim email As New ChilkatEmail email.Subject = "This is a test" email.Body = "This is a test" email.From = "My Name <myname@mydomain.com>" success = email.AddTo("",recipient) Dim success As Long success = mailman.SendEmail(email) If (success <> 1) Then Debug.Print mailman.LastErrorText Else Debug.Print "Mail Sent!" End If |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.