使用c#在asp.net中发送邮件失败[重复]

Posted

技术标签:

【中文标题】使用c#在asp.net中发送邮件失败[重复]【英文标题】:sending mail failure in asp.net using c# [duplicate] 【发布时间】:2012-11-09 09:46:11 【问题描述】:

可能重复:Sending email in .NET through Gmail

这个邮件代码在本地主机上工作,即在我的电脑上,但是当我把它上传到服务器上时它不工作。 错误是:发送邮件失败。请告诉我问题出在哪里。

 if (Session["userinfo"] != null)
     

         lblTest.Text = Session["userinfo"].ToString();
         MailMessage msg = new MailMessage();
         msg.From = new MailAddress("shop.bcharya@gmail.com");
         msg.To.Add(new MailAddress("bcc@dr.com"));
         msg.To.Add(new MailAddress("info@yzentech.com"));
         msg.Subject = "Mail from BcharyaCorporation.online shopping site";
         msg.Body = ""+lblTest.Text+"  wants to buy some products. please contact with him/her";
         SmtpClient sc = new SmtpClient();
         sc.Host = "smtp.gmail.com";
         // sc.Port = 25;
         sc.Credentials = new NetworkCredential("shop.bcharya@gmail.com", "mypassword");
         sc.EnableSsl = true;
         try
         
             sc.Send(msg);
             lblPayment.Text = "Sorry. Currently we are out of online payment service. We will contact you for payment process. Thank you for buying this product.";

         
         catch (Exception ex)
         
             lblPayment.Text=ex.Message.ToString();
             Response.Write(ex.Message);
         

     

【问题讨论】:

你能提供你得到的异常的细节吗? 那里没有显示其他错误详细信息,仅显示发送邮件失败。我在 catch 块中编写代码请查看编辑@ryadavilli 我的意思是你能检查异常类型、内部异常等......这应该让你知道出了什么问题。 【参考方案1】:

对于 gmail 邮件设置也添加端口号

sc.Port = 587;

在这行之后

sc.Host = "smtp.gmail.com";

【讨论】:

等待等待。邮件仅在 gmail 中发送,而不在其他邮件中发送错误是: SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。在@sajanyamaha 了解更多信息 请将“mypassword”替换为“shop.bcharya@gmail.com”的密码 是的,我在那里使用自己的密码。 现在尝试添加 sc.UseDefaultCredentials = false; 没有出现同样的错误【参考方案2】:

如果 SMTP 服务器支持(例如 GMail 和 Hotmail),则仅使用端口 587 和 SSL。一些服务器只使用端口 25 而没有 SSL。

【讨论】:

【参考方案3】:

使用下面的方法然后检查:

SmtpClient sc = new SmtpClient(string); //使用指定的 SMTP 服务器发送电子邮件

【讨论】:

相当于先创建一个SmtpClient,然后设置Host属性,OP已经做到了。 你能告诉我你想指定的 SMTP 服务器是什么意思吗? @rr_only4you 我使用下面的代码发送邮件,它可以工作:System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("10.0.0.101");// 请添加您的端口号 client.UseDefaultCredentials = false;【参考方案4】:

您可以使用下面给出的代码来发送电子邮件。这里通过电子邮件发送错误详细信息是一种方法。试试这个代码发送电子邮件。

using System.Web.Mail
public static bool SendErrorEmail(string to, string cc, string bcc, string subject,    string body, MailPriority priority, bool ishtml)

 try

using (SmtpClient smtpClient = new SmtpClient())

using (MailMessage message = new MailMessage())
 
 MailAddress fromAddress = new MailAddress(“yourmail@domain.com”, “Your name”);
 // You can specify the host name or ipaddress of your server
 smtpClient.Host = “mail.yourdomain.com”; //you can specify mail server IP address here
 //Default port is 25
 smtpClient.Port = 25;
 NetworkCredential info = new NetworkCredential(“yourmail@domain.com”, “your password”);
 smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
 smtpClient.UseDefaultCredentials = false;
 smtpClient.Credentials = info;
 //From address will be given as a MailAddress Object
 message.From = from;
 message.Priority = priority;
 // To address collection of MailAddress
 message.To.Add(to);
 message.Subject = subject;
 // CC and BCC optional
 if (cc.Length > 0)
 
 message.CC.Add(cc);
 
 if (bcc.Length > 0)
 
 message.Bcc.Add(bcc);
 
 //Body can be Html or text format;Specify true if it is html message
 message.IsBodyHtml = isHtml;
 // Message body content
 message.Body = body;
 // Send SMTP mail
 smtpClient.Send(message);
 
 
 return true;
 
 catch (Exception ee)
 
 Logger.LogError(ee, “Error while sending email to ” + toAddress);
 throw;
 

【讨论】:

你能告诉我发送邮件我应该从我的托管站点地址创建自己的邮件服务器吗?请帮助我。@AndrewBarber

以上是关于使用c#在asp.net中发送邮件失败[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net C# 中使用启用两因素身份验证的 office365 电子邮件帐户发送电子邮件?

发送电子邮件 asp.net c#

发送包含存储在数据库中的多个附件的电子邮件(ASP.NET C#)

ASP .Net C# 代码向多个用户发送邮件,这些用户的邮件 ID 应隐藏在组名中

C#和ASP.NET通过Gmail账户发送邮件的代码

我正在尝试在 asp.net c# 中使用 google API 发送电子邮件并收到错误 400 redirect_uri_mismatch