首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SmtpClient发送邮件

SmtpClient发送邮件
EN

Stack Overflow用户
提问于 2012-05-03 04:51:18
回答 3查看 17K关注 0票数 3

我正在尝试使用下面的代码通过gmail发送邮件,但是我一直收到一个错误消息"Unable to connect to the remote host“。我仔细检查了我的配置,一切看起来都很正常。有没有人看到我漏掉了什么?

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            SmtpClient client = new SmtpClient();
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential("mymail@gmail.com", "mypass");
            client.Port = 587;
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true;
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("mymail@gmail.com");
            mail.To.Add("tomail@tomail.org");
            mail.Subject = "subject thing";
            mail.Body = "dubbly doo";
            try
            {
                client.Send(mail);
            }
            catch(SmtpException e)
            {
                Console.Write(e.InnerException.Message);
                Console.ReadLine();
            }
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2012-05-03 05:38:59

很可能您在访问指定的主机和端口时遇到了问题。这可能是一系列事情,其中之一是被防火墙阻止的。首先,在命令提示符下使用telnet程序连接到主机和端口,即telnet smtp.gmail.com 587。如果连接成功,则可以通过按ctrl+]并在出现提示时键入quit来断开连接。如果telnet连接失败,请开始检查与防火墙/网络相关的问题。

您还可以通过将以下内容添加到应用程序的.config文件中来获取包含详细调试信息的文件:

代码语言:javascript
复制
<system.diagnostics>
  <sources>
    <source name="System.Net">
      <listeners>
        <add name="TraceFile"/>
      </listeners>
    </source>
    <source name="System.Net.Sockets" maxdatasize="1024">
      <listeners>
        <add name="TraceFile"/>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="System.Net.trace.log" traceOutputOptions="DateTime"/>
  </sharedListeners>
  <switches>
    <add name="System.Net" value="Verbose"/>
    <!--<add name="System.Net.Sockets" value="Verbose"/>-->
  </switches>
  <trace autoflush="true" />
</system.diagnostics>
票数 8
EN

Stack Overflow用户

发布于 2012-05-03 04:55:00

您是否已将电子邮件帐户设置为允许使用smtp.gmail.com?

http://support.google.com/mail/bin/answer.py?hl=en&answer=13273

票数 1
EN

Stack Overflow用户

发布于 2012-05-03 05:01:18

将您的代码与sending-email-in-net-through-gmail的答案进行比较。如果这是问题所在,则不能肯定,但您在创建SmtpClient时缺少以下内容:

代码语言:javascript
复制
DeliveryMethod = SmtpDeliveryMethod.Network

链接问题中的示例:

代码语言:javascript
复制
var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10421513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档