Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 邮件发送问题_C#_Email - Fatal编程技术网

C# 邮件发送问题

C# 邮件发送问题,c#,email,C#,Email,我使用此代码发送邮件,但我没有收到任何错误,但我能够接收邮件。默认smtp服务器也设置为“127.0.0.1”,作为“inetmgr”中中继邮件的本地主机,但我仍然无法接收邮件。我不知道问题出在哪里 在emailsender.cs类中,这是代码: public void SendEmail(string To, String Subject, String Body, String uname) { string body = "Hi " + uname + ",\n\n \t" + B

我使用此代码发送邮件,但我没有收到任何错误,但我能够接收邮件。默认smtp服务器也设置为“127.0.0.1”,作为“inetmgr”中中继邮件的本地主机,但我仍然无法接收邮件。我不知道问题出在哪里

emailsender.cs
类中,这是代码:

public void SendEmail(string To, String Subject, String Body, String uname)
{
    string body = "Hi " + uname + ",\n\n \t" + Body + "\n" + " \n Regards, \n LMS Team" + "\n\n\tSent at: " + DateTime.Now + " \n\n\t\t---- This is an auto generated mail. Please do not reply.";
    try
    {
        try
        {
            MailMessage Message = new MailMessage();
            Message.From = new MailAddress("karhik.varadarajan@asteor.com");

            if (!string.IsNullOrEmpty(To))
                Message.To.Add(new MailAddress(To));
            Message.Subject = Subject;
            Message.Body = body;
            try
            {
                SmtpClient smtpClient = new SmtpClient("localhost");
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
                smtpClient.Port = 25;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Send(Message);
            }
            catch (System.Web.HttpException ehttp)
            {
                throw new Exception("Email Sending Failed", ehttp);
            }
        }
        catch (IndexOutOfRangeException ex)
        {
            throw new IndexOutOfRangeException("Email Sending Failed", ex);
        }
    }
    catch (System.Exception ex)
    {
        throw new Exception("Email Sending Failed", ex);
    }
}
.aspx
文件中:

protected void Page_Load(object sender, EventArgs e)
{
    EmailSender email = new EmailSender();
    email.SendEmail("karhik.varadarajan@asteor.com", "testingmail", "this is a test mail", "From");
}

我也遇到过同样的问题,有时组织不允许发送电子邮件。所以我尝试了电子邮件中继服务器。尝试弹性电子邮件。

如果您使用PickupDirectoryFromIis选项,请检查您的C:\Inetpub\mailroot\Pickup或Queue或Badmail目录是否创建了EML文件。如果文件位于分拣或队列文件夹中,IIS可能会处理该文件。如果文件处于死信状态,IIS将无法处理该文件。

如果没有错误,则很可能是smpt服务器安装问题。首先,您使用的是localhost,而不是127.0.0.1。我建议在调用localhost时使用127.0.0.1作为最佳实践

即使是“不需要太多”,也没有理由使用localhost。在windows etc\hosts文件中至少放置“127.0.0.1 localhost”。您也可以尝试您知道有权访问的外部SMTP主机(如您的isp)。我知道配置错误的smtp主机可能会在成功发送时出现


然而,正如上面已经提到的,可能还有很多其他问题,比如访问发送邮件。不过,我认为大多数类似的错误都会将错误返回给您。

我没有收到任何错误,但我无法接收邮件。我在relaymail选项的默认smtp服务器中使用了本地主机,对吗?如果在第一次试用时无法将电子邮件发送到指定的电子邮件地址,IIS smtp服务会将其移动到“队列”中文件夹和IIS SMTP服务稍后将继续重试,直到过期。您可以在“控制面板->管理工具->控制面板->管理工具->Internet信息服务->默认SMTP虚拟服务器->属性->传递”中设置IIS SMTP服务的过期超时-