You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法发送电子邮件:已尝试多SMTP配置仍报错,求技术排查

Troubleshooting Your Yahoo Email Sending Failure in C#

Let's break down the issues with your code and walk through key fixes to get your email sending working:

1. Fix Invalid Email Addresses First

Looking at your code, you’re using @yahoo.com as both the sender and recipient address—this is not a valid email address. You need to use full, properly formatted Yahoo addresses like your_actual_username@yahoo.com for both myMsg.From and myMsg.To.Add(). This basic formatting error is almost certainly contributing to the failure.

2. Verify Yahoo SMTP Configuration & Credentials

Yahoo has strict requirements for SMTP access, especially if you use two-step verification:

  • Server & Port: smtp.mail.yahoo.com is correct. For port 465, keep EnableSsl = true (this is the SSL-only port). If you switch to port 587, ensure EnableSsl = true too—Yahoo requires TLS encryption for this port.
  • Credentials:
    • If two-step verification is enabled on your Yahoo account, you can’t use your regular login password. You must generate an App Password from your Yahoo account settings (under "Account Security" > "App Passwords").
    • If two-step verification is off, you may need to enable access for "less secure apps" (note: Yahoo is phasing this out, so using an App Password is the more reliable long-term solution).
    • Make sure the username in NetworkCredential is your full Yahoo email address, not just a partial string.

3. Capture Detailed Exception Information

Your current error message only shows a basic SmtpException, but you can get much more detail to pinpoint the issue (like authentication failures or server rejections). Update your catch block to include the status code and inner exception:

catch (SmtpException ex) {
    MessageBox.Show($"E-mail unsuccessful: {ex.Message}\nStatus Code: {ex.StatusCode}\nInner Exception: {ex.InnerException?.Message}");
}
catch (Exception ex) {
    // Catch other potential errors (like invalid email format)
    MessageBox.Show($"Unexpected error: {ex.Message}");
}

This will tell you exactly whether the problem is with authentication, network access, or something else.

4. Check Network & Firewall Access

Ensure your application can reach Yahoo’s SMTP server on the port you’re using. Test the connection with telnet smtp.mail.yahoo.com 465 (or port 587) from your machine—if it can’t connect, your local firewall or network may be blocking the port.

Corrected Example Code

Here’s a revised version of your code with key fixes applied:

private void button4_Click(object sender, EventArgs e) {
    try {
        // Replace these with your actual details
        string senderEmail = "your_real_yahoo_account@yahoo.com";
        string recipientEmail = "recipient@yahoo.com";
        string appPassword = "your_generated_app_password"; // Use App Password if 2FA is enabled

        MailMessage myMsg = new MailMessage(senderEmail, recipientEmail);
        myMsg.Subject = "Subject " + textBox1.Text;
        myMsg.Body = "Body " + textBox2.Text;

        SmtpClient smtp = new SmtpClient("smtp.mail.yahoo.com");
        smtp.Port = 465;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new System.Net.NetworkCredential(senderEmail, appPassword);
        smtp.EnableSsl = true;
        
        smtp.Send(myMsg);
        MessageBox.Show("E-mail sent successfully!");
    } catch (SmtpException ex) {
        MessageBox.Show($"E-mail unsuccessful: {ex.Message}\nStatus Code: {ex.StatusCode}\nInner Exception: {ex.InnerException?.Message}");
    } catch (Exception ex) {
        MessageBox.Show($"Unexpected error: {ex.Message}");
    }
}

Final Checks

  • Double-check that your Yahoo account has SMTP access enabled (it’s usually on by default, but worth confirming in account settings).
  • If you still get authentication errors, regenerate the App Password and ensure you’re using the exact string provided by Yahoo.

内容的提问来源于stack exchange,提问作者Sebastian Marculescu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:07:32