繁体   English   中英

在C#中通过SMTP发送电子邮件时出错,这在2017年仍然有效吗?

[英]Error sending email via SMTP in C#, Does this still work in 2017?

在对问题进行了广泛研究之后,尤其是在stackoverflow上应用了类似问题的建议之后,下面的代码仍然返回错误“” System.Net.Mail.SmtpException:语法错误,命令无法识别。 服务器响应是:在...处拒绝连接。“”

        try
        {
            var mail = new MailMessage();
            mail.From = new MailAddress("demo77377@gmail.com");
            mail.To.Add(new MailAddress("xxxxxxx@gmail.com"));
            mail.Subject = "TEST";
            mail.Body = "This is a test mail from C# program";

            using (var smtp = new SmtpClient())
            {
                smtp.Credentials = new System.Net.NetworkCredential("demo77377@gmail.com", "AABBCCDDEE1!","gmail.com");
                smtp.Host = "smtp.gmail.com";
                smtp.Port = 587;
                smtp.EnableSsl = true;
                smtp.UseDefaultCredentials = false;
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Timeout = 10000;                    
                //
                smtp.Send(mail);
                Console.WriteLine("Message sent successfully");
                Console.ReadLine();
            }

        }
        catch (Exception e)

我已尽一切可能
在客户端上>我有交替的smtp属性(排列)等
在服务器上>我使Gmail帐户的安全性降低,我禁用了验证码等

我观察到关于stackoverflow的类似问题主要是在3年前,因此gmail是否有可能不再通过C#支持此SMTP方法,同样,不赞成使用gmail API

另外,请在代码中找到该gmail帐户提供的原始密码,以确认此问题是该gmail帐户的一般性问题还是孤立的

谢谢

验证此代码可以正常工作:

var fromAddress = new MailAddress("YOUREMAIL@gmail.com", "YOUREMAIL@gmail.com");
var toAddress = new MailAddress("YOUREMAIL@gmail.com", "YOUREMAIL@gmail.com");
const string fromPassword = "YOURPASSWORD";
const string subject = "YOUREMAIL@gmail.com";
const string body = "YOUREMAIL@gmail.com";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

即使您有个人信息,我也不太满意,因此我已将其删除。 显然用正确的详细信息替换电子邮件和密码。

从我酒店的无线网络切换到办公网络后,终于可以正常工作了。网络连接的类型在C#中通过SMTP发送电子邮件中起着一定作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM