【问题标题】:Email sending error with c# and Godaddy server [duplicate]c#和Godaddy服务器的电子邮件发送错误[重复]
【发布时间】:2017-05-05 07:38:51
【问题描述】:

您好,我正在使用来自 goodaddy 的托管,mi 应用程序是用 c# 制作的,问题是发送电子邮件时,这是我的代码

 public ResponseDto sendEmail(EmailDto emailDto) {
        try
        {
            MailMessage message = new MailMessage();
            SmtpClient client = new SmtpClient();
            message.From = new MailAddress("mail@gmail.com");
            message.Subject = "have a new mail";
            message.Body = "info: \n "
                + "name: " + emailDto.Name 
                + "\mail: "+ emailDto.Email + "\nMessage: " +
                emailDto.Message;
            message.To.Add("mail@hotmail.com");
            client.EnableSsl = true;
            client.UseDefaultCredentials = false;

            client.Port = 587;
            client.Host = "smtp.gmail.com";
            client.Credentials = new System.Net.NetworkCredential("mail@gmail.com", "(password");
            client.Send(message);
        }
        catch (Exception e) {
            return new ResponseDto
            {
                message = e.ToString()
              ,
                Success = false
            };
        }

        return new ResponseDto
        {
            message = "success",
            Success = true
        };

    }

我发送邮件的邮箱是gmail,错误是下一个

System.Net.Mail.SmtpException:发送邮件失败。 ---> System.Net.WebException:无法连接到远程服务器 ---> System.Net.Sockets.SocketException:尝试以访问权限 74.125.199.109:587 禁止的方式访问套接字在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 在 System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) --- 内部异常堆栈跟踪结束 --- 在 System.Net.PooledStream.Activate(Object owningObject 的 System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6) , 布尔异步, GeneralAsyncDelegate asyncCallback) 在 System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) 在 System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate e 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) --- 内部异常堆栈跟踪结束 --- 在 System.Net.Mail.SmtpClient.Send(MailMessage message) 在 Core.EmailManager.sendEmail(EmailDto emailDto)

可能是什么问题?

【问题讨论】:

  • 显然,you cannot do that on GoDaddy 使用共享主机帐户。
  • 或者你可以尝试using GMail API而不是SMTP
  • @KenY-N y 看到了这篇文章,也许我需要设置一个来自 godaddy 的电子邮件
  • 我解决了,几分钟后我会给出答案谢谢大家!

标签: c# asp.net .net email


【解决方案1】:

这是我的有效方法。我将在 web config 中设置用户名和密码。

 MailMessage mailMessage = new MailMessage();
 mailMessage.From = new MailAddress("mail@gmail.com", "");
 mailMessage.To.Add(userEmailAddress);
 mailMessage.Subject = subject;
 mailMessage.Body = "";
 mailMessage.IsBodyHtml = true;
 SmtpClient mailSender = new SmtpClient(ConfigurationManager.AppSettings["smtpconn"]);
await mailSender.SendMailAsync(mailMessage);

web config

  <appSetting>
   <add key="smtpconn" value="smtp.gmail.com" />
 </appSettings>
 <system.net>
<mailSettings>
  <smtp from="mail@gmail.com">
    <network host="smtp.gmail.com" port="587" userName="un" password="pw" defaultCredentials="false"/>
  </smtp>
</mailSettings>
</system.net>

【讨论】:

  • 我做到了,但给了我同样的错误
  • 您认为问题可能在于托管服务提供商。我觉得它可能。
  • 我的实现不是异步的,但是否无关?
  • 我解决了,几分钟后我会给出答案,谢谢!
【解决方案2】:

我解决了,我希望这个aswer可以帮助别人,代码在这里:

 public ResponseDto sendEmail(EmailDto emailDto) {
        try
        {
            MailMessage message = new MailMessage();
            SmtpClient client = new SmtpClient();
            message.From = new MailAddress("mail@gmail.com");
           message.Subject = "have a new mail";
        message.Body = "info: \n "
            + "name: " + emailDto.Name 
            + "\mail: "+ emailDto.Email + "\nMessage: " +
            emailDto.Message;
            message.To.Add("mail@hotmail.com");
             client.EnableSsl = false;
             client.UseDefaultCredentials = false;
             client.Port = 25;
             client.Host = "relay-hosting.secureserver.net";
             client.Send(message);

        }
        catch (Exception e) {
            return new ResponseDto
            {
                message = e.ToString()
              ,
                Success = false
            };
        }

        return new ResponseDto
        {
            message = "success",
            Success = true
        };

    }

问题是其他中继/smtp 服务器无法在我们的主机上运行。而且我不需要指定密码。我更改了端口和主机,这是帮助我的链接

https://au.godaddy.com/community/Developer-Cloud-Portal/Unable-to-send-email-from-C-net-application-from-website/td-p/2394

【讨论】:

  • 你救了我的命 :) client.Host = "relay-hosting.secureserver.net";
  • 解决了我们的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2016-12-11
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多