【问题标题】:Sending an email using C# through network proxy通过网络代理使用 C# 发送电子邮件
【发布时间】:2012-07-26 20:25:43
【问题描述】:

我正在尝试创建一个程序来查询数据库并将报告导出到 Excel,然后通过电子邮件发送状态,我被困在电子邮件部分。我不断收到“发送邮件失败”并且 smtpException 未处理“。我相信这是因为我正在为其做这件事的公司有一个网络代理。我可以访问互联网。我只是无法发送电子邮件。有什么我需要的添加以允许它通过代理发送它? 这是错误:

    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@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);   

以下是包括:

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;

【问题讨论】:

    标签: c# email networking proxy smtp


    【解决方案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 服务器)都将通过代理服务器(除非您将其添加到绕过列表...)。

    /维克托

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 2021-08-10
      • 2021-11-16
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多