繁体   English   中英

MailMessage System.Net.Mail.SmtpException,尝试通过 C# 表单发送 email 时出错

[英]MailMessage System.Net.Mail.SmtpException, Error when trying to send email via C# form

嗨,我在尝试设置发送 email 时卡住并不断出错。

这是我的 using.system:

using System.Net;
using System.Web;
using System.Net.Mail;

然后我在我的发送 email 按钮中有这个代码。

private void BtnEmail_Click(object sender, EventArgs e)
        {


            try
            {
                string to = "myEmail@gmail.com";
                string from = "myEmail@gmail.com";
                string subject = "Test email";
                string body = @"This is a test email";


                MailMessage mail = new MailMessage(from, to, subject, body);
                SmtpClient client = new SmtpClient("smtp.gmail.com");
                client.Credentials = new NetworkCredential ("myEmail@gmail.com", "myPassword");
                client.Port = 587;
                client.EnableSsl = true;
                client.Send(mail);
                MessageBox.Show("Mail Sent", "Success", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n\n" + ex.GetType().ToString() + "\n\n" + ex.StackTrace, "Exception");
            }
        }

看起来异常正在通过“client.send(mail);” 线。

捕获异常消息是:发送邮件失败.. System.Net.Mail.SmtpException。

知道这里出了什么问题吗? 谢谢。

首先你需要了解这个问题的原因,你可以使用SMTPDIAG工具来解决这个问题。

尝试使用 SSL 端口 465 或 25,因为端口 587 应该与 TLS 一起使用。

检查 Google 文档: https : //support.google.com/mail/answer/78775?hl=en

检查您的防火墙和以太网防火墙,端口可能已关闭。

我遇到了同样的问题,因为 Google 阻止了这些类型不太安全的邮件。 检查您在代码中使用的邮件。 如果您收到一封来自 google 的邮件,说允许访问安全性较低的应用程序,您可以将其打开。 现在您将开始接收邮件。

我强烈推荐你使用MailKit库。 其出色的 C# 库用于发送或检索电子邮件。 更多信息或示例: https://github.com/jstedfast/MailKit

此示例说明如何发送 email。

using System;

using MailKit.Net.Smtp;
using MailKit;
using MimeKit;

namespace TestClient {
    class Program
    {
        public static void Main (string[] args)
        {
            var message = new MimeMessage ();
            message.From.Add (new MailboxAddress ("Joey Tribbiani", "joey@friends.com"));
            message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "chandler@friends.com"));
            message.Subject = "How you doin'?";

            message.Body = new TextPart ("plain") {
                Text = @"Hey Chandler,

I just wanted to let you know that Monica and I were going to go play some paintball, you in?

-- Joey"
            };

            using (var client = new SmtpClient ()) {
                client.Connect ("smtp.friends.com", 587, false);

                // Note: only needed if the SMTP server requires authentication
                client.Authenticate ("joey", "password");

                client.Send (message);
                client.Disconnect (true);
            }
        }
    }
}

希望这会有所帮助,请随时询问。

gmail 使用端口 465。 587 不工作。

暂无
暂无

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

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