通过 c#.net SmtpClient 发送电子邮件无法正常工作

Sending an Email via c#.net SmtpClient doesn't work properly

我有这个代码,用于将电子邮件从 GMX 邮件发送到 walla 邮件。

MailMessage mail = new MailMessage("yyy@gmx.com", "yyy@walla.com");
            SmtpClient client = new SmtpClient();
            client.Port = 25;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.EnableSsl = true;
            client.Host = "mail.gmx.com";
            mail.Subject = "A new account was registered: ";
            mail.Body = string.Format("Username: {0}, Password: {1}", textBox1.Text, textBox2.Text);
            try
            {
                client.Send(mail);

            }
            catch (SmtpException ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.ToString());
            }

每当我尝试 运行 该代码时,我都会收到一个异常,提示我需要安全连接,但我已启用 SSL。我做错了什么?谢谢!

如 GMX 页面所述,使用 SSL/TLS 连接时必须使用端口 587: https://help.gmx.com/en/applications/pop3.html

  SmtpClient client = new SmtpClient();
  client.Port = 587;

我认为您还应该使用您的邮件帐户的凭据将凭据设置为对 SMTP 客户端的身份验证:

client.Credentials = new NetworkCredential("username", "password");

您需要在 gmx.net 上生成应用专用密码。它需要启用 2factor-authentication.

转到 gmx.net > 设置 > 帐户 > 密码

这是来自网站的信息文本

Für die Nutzung externer E-Mail-Programme über POP3/IMAP oder die Einbindung Ihres GMX Kalenders/Adressbuchs (mit CalDav bzw. CardDav) in ein externes Programm, können Sie hier Anwendungsspezifische Passwörter erstellen und verwalten. Um Anwendungsspezifische Passwörter verwenden zu können, muss die 2-Faktor-Authentifizierung aktiviert sein.