title: Sending an email using C# through network proxy
body: <p>I am trying to create a program that queries a database and exports reports to excel and then emails out the status, I am stuck on the email part. I keep getting "Failure sending mail" and smtpException was unhandled". I belive this is because the company I am doing this for has a network proxy. I can access the internet. I just can not send an email. Is there anything I need to add to allow it to send it through the proxy?
  Here is the error:</p>
  
  <pre><code>    System.Net.Mail.SmtpException was unhandled
    Message=Failure sending mail.
    Source=System
    StackTrace:
         at System.Net.Mail.SmtpClient.Send(MailMessage message)
         at WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\DavidPaquette\My Documents\Visual Studio 2010\Projects\TestMail\TestMail\Form1.cs:line 47
         at System.Windows.Forms.Control.OnClick(EventArgs e)
         at System.Windows.Forms.Button.OnClick(EventArgs e)
         at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
         at System.Windows.Forms.Control.WmMouseUp(Message&amp; m, MouseButtons button, Int32 clicks)
         at System.Windows.Forms.Control.WndProc(Message&amp; m)
         at System.Windows.Forms.ButtonBase.WndProc(Message&amp; m)
         at System.Windows.Forms.Button.WndProc(Message&amp; m)
         at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)
         at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
         at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
         at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp; msg)
         at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
         at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
         at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
         at System.Windows.Forms.Application.Run(Form mainForm)
         at WindowsFormsApplication1.Program.Main() in C:\Documents and Settings\DavidPaquette\my documents\visual studio 2010\Projects\TestMail\TestMail\Program.cs:line 18
         at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
         at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
         at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
         at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
         at System.Threading.ThreadHelper.ThreadStart()
    InnerException: System.Net.WebException
         Message=Unable to connect to the remote server
         Source=System
         StackTrace:
              at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress&amp; address, Socket&amp; abortSocket, Socket&amp; abortSocket6, Int32 timeout)
              at System.Net.PooledStream.Activate(Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback)
              at System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback)
              at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
              at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
              at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
              at System.Net.Mail.SmtpClient.GetConnection()
              at System.Net.Mail.SmtpClient.Send(MailMessage message)
         InnerException: System.Net.Sockets.SocketException
              Message=A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 173.194.70.108:587
              Source=System
              ErrorCode=10060
              NativeErrorCode=10060
              StackTrace:
                   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
                   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket&amp; socket, IPAddress&amp; address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception&amp; exception)
              InnerException: 
  </code></pre>
  
  <p>And here is the email portion of the code:</p>
  
  <pre><code>MailMessage message = new MailMessage();
  
      message.To.Add(new MailAddress("email@gmail.com"));
      message.From = new MailAddress("email@gmail.com");
      //Attachment attachment = new Attachment(FileUpload1.PostedFile.FileName);
      message.Subject = "Subject";
      message.Body = "This is a test"; 
  
      //message.Attachments.Add(attachment);     
      SmtpClient client = new SmtpClient();
  
      client.Port = 587; // Gmail works on this port   
      client.Host = "smtp.gmail.com";   
      System.Net.NetworkCredential nc = new System.Net.NetworkCredential("email@gmail.com", "pass"); 
      client.EnableSsl = true;     
      client.UseDefaultCredentials = false;  
      client.Credentials = nc;  
      client.Send(message);   
  </code></pre>
  
  <p>Here are the includes:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.IO;
  using System.Windows.Forms;
  using System.Net;
  using System.Collections;
  using System.Text.RegularExpressions;
  using System.Net.Mail;
  </code></pre>