Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicPythonRubySQL ServerSwiftTclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.js

C# Examples

Async
Certificates
ECC
Email Object
Encryption
FTP
HTML-to-XML/Text
Gzip
HTTP
IMAP
JSON
Jwt
MHT / HTML Email
PEM
PFX/P12
Java KeyStore (JKS)
POP3
RSA Encryption
MIME
REST
SCP
SMTP
Socket/SSL/TLS
SSH Key
SSH
SSH Tunnel
SFTP
Stream
Tar Archive
XML
XMP
Zip

More Examples...
OpenSSL
Google APIs
Google Cloud Storage
Azure Cloud Storage
Amazon S3 (new)
Google Drive
Dropbox
Firebase
ASN.1
PRNG
Amazon S3
Bounced Email
CSV
Diffie-Hellman
DKIM / DomainKey
DSA
NTLM
QuickBooks
Spider
Digital Signatures

 

 

 

 

 

 

 

(C#) Send Email without Mail Server

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

Chilkat .NET Downloads

Chilkat .NET Assemblies

Chilkat for .NET Core

Chilkat for Mono

Chilkat for Xamarin

//  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.
Chilkat.MailMan mailman = new Chilkat.MailMan();

//  Any string argument automatically begins the 30-day trial.
bool success = mailman.UnlockComponent("30-day trial");
if (success != true) {
    Console.WriteLine("Component unlock failed");
    return;
}

string recipient = "admin@chilkatsoft.com";

//  Do a DNS MX lookup for the recipient's mail server.
string smtpHostname;
smtpHostname = mailman.MxLookup(recipient);
if (mailman.LastMethodSuccess != true) {
    Console.WriteLine(mailman.LastErrorText);
    return;
}

Console.WriteLine(smtpHostname);

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

//  Create a new email object
Chilkat.Email email = new Chilkat.Email();

email.Subject = "This is a test";
email.Body = "This is a test";
email.From = "My Name <myname@mydomain.com>";
email.AddTo("",recipient);

success = mailman.SendEmail(email);
if (success != true) {
    Console.WriteLine(mailman.LastErrorText);
}
else {
    Console.WriteLine("Mail Sent!");
}


 

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