.net smtp不发送电子邮件,没有错误

本文关键字:有错误 电子邮件 smtp net | 更新日期: 2023-09-27 18:33:39

我正在尝试使用客户组织的电子邮件服务器通过Web应用程序发送电子邮件。以下是我正在使用的代码。

MailMessage MyMailMessage = new MailMessage();
MyMailMessage.Subject = "Email testing";
MyMailMessage.From = new MailAddress("name@mydomain.com", "My name");
MyMailMessage.To.Add(new MailAddress(strEmail, "Applicant"));
SmtpClient mySmtpClient = new SmtpClient();
mySmtpClient.EnableSsl = true;
mySmtpClient.Send(Accepted);

网络配置文件:

<mailSettings>
  <smtp deliveryMethod="Network" from=" name@mydomain.com">
    <network host="smtps.mydomain.com" port="465" enableSsl="true" defaultCredentials="true"
    userName="myName" password="myPassword" />
  </smtp>
</mailSettings>

当我使用 gmail smtp 详细信息或我本地组织的 smtp 详细信息时,它工作得很好。由于某种原因,它不起作用,也不会抛出任何错误。

我尝试调试并检查了显示"超时"的异常。

我不确定还要检查什么。有人可以提出解决方案吗?

注意:我还检查了没有防火墙阻止端口:465。

谢谢。

亲切问候

苏德

.net smtp不发送电子邮件,没有错误

您可以尝试通过在命令 Promt(cmd) 中键入"telnet smtps.mydomain.com 465"来测试连接。

问候

试试这个:

var sysLogin="yourlogin@gmail.com";
var sysPass="y0urP@ss";
var sysAddress = new MailAddress(sysLogin, "Message from me!");
var receiverAddress = new MailAddress("mike@hotmail.com");
var smtp = new SmtpClient
        {
            Host = "smtp.gmail.com",   //gmail example
            Port = 587,
            EnableSsl = false,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(sysLogin, sysPass)
        };
        using (var message = new MailMessage(sysAddress, receiverAddress) { Subject = "Some subject", Body = "Some text" })
        {
            smtp.Send(message);
        }
<system.net>
    <mailSettings>
      <smtp from="emialid.com">
        <network host="domain.com" port="25" userName="emialid.com" password="******" defaultCredentials="false"/>
      </smtp>
    </mailSettings>
    </system.net>

public string SendEmailTest(String EmailMessage, String FromMail, String MailPassword, String MailServer, String To, String CC, String BCC, String DisplayName, String Subject, String Attachment)
    {
        try
        {
            SmtpClient smtpClient = new SmtpClient();
            MailMessage message = new MailMessage();
            MailAddress fromAddress;
            fromAddress = new MailAddress(FromMail);
            smtpClient.Host = MailServer;
            smtpClient.Port = 25;
            System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(FromMail, MailPassword);
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Credentials = SMTPUserInfo;
            message.From = fromAddress;
            message.To.Add(new MailAddress(To, DisplayName));
            if (CC != "")
                message.CC.Add(new MailAddress(CC, DisplayName));
            if (BCC != "")
                message.Bcc.Add(new MailAddress(BCC, DisplayName));
            message.Subject = Subject;
            message.IsBodyHtml = true;
            message.Body = "Your Password is : " + EmailMessage;
            if (Attachment != "")
                message.Attachments.Add(new Attachment(Attachment));
            message.Priority = MailPriority.High;
            smtpClient.Send(message);
            return "SendEmail";
        }
        catch (Exception ex)
        {
            return "Email :" + ex;
        }
    }
}

}

是否已验证客户端 SMTP 服务器是否安装了有效的 SSL 证书并且可以接受端口 465 上的连接?

如果能够这样做,请运行数据包嗅探器(如 WireShark)来检查数据包流。

SysIntenerals TcpView工具是一个更轻量级的实用程序,也可以让你看到数据包状态。

谢谢大家的建议。我已经修复了它,我只需要将端口号从 465 更改为 25。