Link to home
Start Free TrialLog in
Avatar of michouis
michouis

asked on

Send Email to External Address ASP.Net IIS6

I have developed an ASP.Net Web Site (VB) and need to be able to send emails to external addresses. We are using an Exchange Server for email but it will not send to external addresses, only internal. What a pain. I installed the Virtual SMTP Server in IIS6 and specified our ISP in the Smart Host box in Delivery options. I also added 127.0.0.1 to Relay Restrictions to allow... No where can I find how the <Mailsettings> section of my web.config should be set to work with the virtual smtp server in IIS6. In my code, see below, what should I specify in place of our exchange server address? How do I get this to work??
Dim smtp As New SmtpClient("exchangeserveraddress")
 
What do I specify instead of "exchangeserveraddress" if I need to use the Virtual SMTP Server??

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of tillgeffken
tillgeffken

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I am assuming that you are using ASP.NET 2.0 or above and you have missed to provide authentication before sending the mail using the SMTP/Exchange Server.

First to quickly answer your "exchangeserveraddress" question, you can provide the machine name if the server is accessible on LAN or fully qualified URL. However, it is always a recommended or good practice to provide IP Address of the server and also provide the port number using the overload constructor.

Check the code snippet which has been copied and modified from: http://www.systemnetmail.com/faq/4.2.aspx. Make sure the Network Credentials (User Name/Password) provided have appropriate account in Mail Server.

Further, some public web-based mail services such as Gmail allow to send emails using Gmail Accounts. For this purpose, you have to provide a little extra information to the SmtpClient object. Sample code for sending email from Gmail is also in snippet.
'create the mail message
Dim mail As New MailMessage("from@mycompany.com", "you@yourcompany.com")
 
'set the content
mail.Subject = "This is an email"
mail.Body = "this is the body content of the email."
 
'set extra properties of the MailMessage object as per requirements
 
'send the message
Dim smtp As New SmtpClient("127.0.0.1")
 
'to authenticate we set the username and password properites on the SmtpClient
smtp.Credentials = New NetworkCredential("username", "secret")
smtp.Send(mail)
 
'''SEND EMAIL USING GMAIL ACCOUNT
'create the mail message
Dim mail As New MailMessage("from@mycompany.com", "you@yourcompany.com")
 
'set the content
mail.Subject = "This is an email"
mail.Body = "this is the body content of the email."
 
'set extra properties of the MailMessage object as per requirements
 
'send the message
Dim smtp As New SmtpClient("smtp.gmail.com", 587)
 
smtp.DeliveryMethod = SmtpDeliveryMethod.Network
smtp.EnableSsl = True
smtp.UseDefaultCredentials = False
 
'to authenticate we set the username and password properites on the SmtpClient
smtp.Credentials = New NetworkCredential("myaccount@gmail.com", "thepassword")
smtp.Send(mail)

Open in new window

Avatar of michouis
michouis

ASKER

The actual solution was to run System Manager on our Exchange server and get to the SMTP Protocol ACCESS option and add the Web Server IP address as an allowed IP address for relaying messages... I do not want to place the hst and credentials in the web.config file... I set the host in the smart host box in my web server virtual smtp folder etc...