MailMessage System.Net.Mail.SmtpException,尝试通过 C# 表单发送电子邮件时出
本文关键字:表单 电子邮件 Mail Net System SmtpException MailMessage | 更新日期: 2023-09-27 18:36:56
嗨,我在尝试为其设置发送电子邮件时卡住了并不断出现错误。
这是我的 using.system:
using System.Net;
using System.Web;
using System.Net.Mail;
然后,我在"发送电子邮件"按钮中拥有此代码。
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 一起使用。
查看谷歌文档:https://support.google.com/mail/answer/78775?hl=en。
检查您的防火墙和以太网防火墙,端口可能已关闭。
我遇到了同样的问题,因为谷歌阻止了这些不太安全的邮件。检查您在代码中使用的邮件。如果您收到一封来自谷歌的邮件,说允许访问安全性较低的应用程序,您可以将其打开。现在您将开始接收邮件。
我强烈建议您使用MailKit
库。其出色的 C# 库,用于发送或检索 emial。有关更多信息或示例:https://github.com/jstedfast/MailKit
此示例演示如何发送电子邮件。
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 将不起作用。