VB.NET Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++DelphiFoxProJavaPerlPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor

Unreleased...
Service
PPMD
Deflate
Bzip2
LZW
Bz2
DH Key Exchange
DSA
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

Send Email without Mail Server

How to send an email without a mail server (so-to-speak).

Download Chilkat Email ActiveX for POP3 / SMTP

Download Chilkat IMAP ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATMAILLib2_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
mailman: TChilkatMailMan2;
success: Integer;
recipient: String;
smtpHostname: String;
email: CHILKATMAILLib2_TLB.IChilkatEmail2;

begin

//  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.
mailman := TChilkatMailMan2.Create(Self);

//  Any string argument automatically begins the 30-day trial.
success := mailman.UnlockComponent('30-day trial');
if (success <> 1) then
  begin
    ShowMessage('Component unlock failed');

  end;

recipient := 'admin@chilkatsoft.com';

//  Do a DNS MX lookup for the recipient's mail server.

smtpHostname := mailman.MxLookup(recipient);
if (smtpHostname = NULL ) then
  begin
    ShowMessage(mailman.LastErrorText);

  end;

Memo1.Lines.Add(smtpHostname);

//  Set the SMTP server.
mailman.SmtpHost := smtpHostname;

//  Create a new email object
email := CoChilkatEmail2.Create();

email.Subject := 'This is a test';
email.Body := 'This is a test';
email.From := 'Chilkat Support <support@chilkatsoft.com>';
email.AddTo('',recipient);

success := mailman.SendEmail(email);
if (success <> 1) then
  begin
    ShowMessage(mailman.LastErrorText);
  end
else
  begin
    ShowMessage('Mail Sent!');
  end;
end;

 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2007 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser