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

C#中SMTP邮件发送失败但Python正常,求修改方案

C# SMTP邮件发送故障修复

我用C#编写的SMTP邮件发送代码无法正常工作,但相同配置的Python代码可以正常发送邮件。请指出C#代码需要修改的部分:

Python可运行代码

def send_mail():
    port = 443  # For SSL
    smtp_server = "smtps.****.be"
    sender_email = "***********"  # Enter your address
    receiver_email = "***********"  # Enter receiver address

    # create message object instance
    msg = MIMEMultipart()

    message = "Hello"

    # setup the parameters of the message
    msg['From'] = '**********'
    msg['To'] =  '*********'
    msg['Subject'] = "Test"

    # add in the message body
    msg.attach(MIMEText(message, 'plain'))

    username = '********'
    password = '********'
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(username, password)
        server.sendmail(
            sender_email, receiver_email, msg.as_string()
        )

    print("successfully sent email to {}".format(msg['To']))

C#故障代码

MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtps.******.be");
mail.From = new MailAddress("***********");
mail.To.Add(textBox1.Text);

mail.Subject = "reminder ";
mail.Body = textBox4.Text;

SmtpServer.Port = 443;
//username 
//password 
SmtpServer.Credentials = new System.Net.NetworkCredential("*****"."*******");

SmtpServer.Send(mail);
MessageBox.Show("mail Send");

需要修改的部分:

  1. 启用SSL加密:Python代码用SMTP_SSL直接建立SSL连接,C#的SmtpClient默认未开启SSL,必须手动设置SmtpServer.EnableSsl = true;,否则无法在443端口完成加密通信。
  2. 修复语法错误:NetworkCredential构造函数的参数分隔符错误,原代码用.分隔,需改为逗号,,即new System.Net.NetworkCredential("*****", "*******");。
  3. 添加资源管理(可选但推荐):MailMessage和SmtpClient都实现了IDisposable接口,用using语句可自动释放资源,避免内存泄漏。
  4. 校验地址一致性:确保mail.From的邮箱地址与NetworkCredential中的用户名完全匹配,部分SMTP服务器会验证发件人地址与登录账号是否一致。

修改后的完整C#代码:

using (MailMessage mail = new MailMessage())
using (SmtpClient SmtpServer = new SmtpClient("smtps.******.be"))
{
    mail.From = new MailAddress("***********");
    mail.To.Add(textBox1.Text);
    mail.Subject = "reminder ";
    mail.Body = textBox4.Text;

    SmtpServer.Port = 443;
    SmtpServer.EnableSsl = true;
    SmtpServer.Credentials = new System.Net.NetworkCredential("*****", "*******");

    SmtpServer.Send(mail);
    MessageBox.Show("mail Send");
}

内容的提问来源于stack exchange,提问作者sscz azw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:39:23