2012-07-26 151 views
0

我正在嘗試創建一個查詢數據庫並將報告導出爲ex​​cel然後通過電子郵件發送狀態的程序,我被卡在電子郵件部分。我一直在收到「發送郵件失敗」和smtpException未處理「我相信這是因爲我這樣做的公司有一個網絡代理,我可以訪問互聯網,我只是不能發送電子郵件。要添加到允許其通過代理髮送 以下是錯誤:通過網絡代理使用C#發送電子郵件

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& m, MouseButtons button, Int32 clicks) 
     at System.Windows.Forms.Control.WndProc(Message& m) 
     at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
     at System.Windows.Forms.Button.WndProc(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
     at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& 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& address, Socket& abortSocket, Socket& 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& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) 
      InnerException: 

這裏是代碼的電子郵件部分:

MailMessage message = new MailMessage(); 

    message.To.Add(new MailAddress("[email protected]")); 
    message.From = new MailAddress("[email protected]"); 
    //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 protected]", "pass"); 
    client.EnableSsl = true;  
    client.UseDefaultCredentials = false; 
    client.Credentials = nc; 
    client.Send(message); 

下面是包括:

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; 

回答

1

您可以將代理服務器添加到您的web.config文件,http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx

<configuration> 
    <system.net> 
    <defaultProxy> 
     <proxy 
     usesystemdefault="true" 
     proxyaddress="http://192.168.1.10:3128" 
     bypassonlocal="true" 
     /> 
     <bypasslist 
     <add address="[a-z]+\.contoso\.com" /> 
     </bypasslist> 
    </defaultProxy> 
    </system.net> 
</configuration> 

一旦你添加了這一點,並配置它所有呼出電話(到您的SMTP服務器)將通過代理服務器(除非你加入它到旁路清單...)。

/Viktor

+0

如何在'SmtpClient'的代碼中進行配置? – JobaDiniz 2017-07-04 14:44:55

相關問題