用ASP.net发送电子邮件

本文关键字:电子邮件 net ASP | 更新日期: 2023-09-27 18:16:13

所以我一直在寻找stackoverflow通过asp网站使用gmail帐户发送电子邮件的方法…

我尝试了很多方法,包括在。net中通过Gmail发送电子邮件,这似乎是最好的,因为他得到了大量的支持。

然而遗憾的是,它仍然不适合我!我总是超时。

下面是我的代码:

 var fromaddress = new MailAddress("from@gmail.com", "from");
 var toaddress = new MailAddress("to@address.com", "to");
 try
 {
     using (var smtpClient = new SmtpClient())
     {              
         smtpClient.EnableSsl = true;
         using (var message = new MailMessage(fromaddress, toaddress))
         {
             message.Subject = "Test";
             message.Body = "Testing this shit!";
             smtpClient.Send(message);
             return true;
         }
     }
 }
 catch (Exception ex)
 {
     return false;
 }

在我的网页。config I have

  <system.net>
    <mailSettings>
      <smtp from="from@gmail.com" deliveryMethod="Network">
        <network userName="from@gmail.com" password="mypassword" host="smtp.gmail.com" port="587"/>
      </smtp>             
    </mailSettings>
  </system.net>

根据我访问过的几个网站,这应该工作!!.. 但它没有。

我还做错了什么吗?

用ASP.net发送电子邮件

在smtpClient.Send()方法之前不要设置登录。

NetworkCredential NetCrd = new NetworkCredential(youracc, yourpass);
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = NetCrd;

加载网页。

按照本页的建议,尝试安装telnet,看看是否可以连接到邮件服务器。这可能是服务器上的防火墙问题。您也可以尝试使用链接中建议的其他端口。

你的代码看起来不错。

尝试故意输入虚假凭证。如果你得到一个不同的错误信息,你是连接到gmail,有一个问题。

如果你遇到同样的超时问题,这可能不是软件的问题,而是防火墙的问题。

longshot - update也许有一张网。配置问题?尝试像这样在代码中指定所有内容。我在现实生活中使用过Gmail,所以如果这不起作用,肯定是防火墙/连接的问题。

           SmtpClient mailClient = new SmtpClient();
            //This object stores the authentication values     
            System.Net.NetworkCredential basicCredential =
                new System.Net.NetworkCredential("username@mydomain.com", "****");
            mailClient.Host = "smtp.gmail.com";
            mailClient.Port = 587;
            mailClient.EnableSsl = true;
            mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            mailClient.UseDefaultCredentials = false;
            mailClient.Credentials = basicCredential;

            MailMessage message = new MailMessage();
            MailAddress fromAddress = new MailAddress("info@mydomain.com", "Me myself and I ");
            message.From = fromAddress;
            //here you can set address   
            message.To.Add("to@you.com");
            //here you can put your message details
            mailClient.Send(message);

好运. .

你能试一下吗?

            SmtpClient smtpClient = new SmtpClient();
            MailMessage message = new MailMessage();
                try
                {
                    MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["fromAddress"], ConfigurationManager.AppSettings["displayName"]); //Default from Address from config file
                    MailAddress toAddress = new MailAddress("abc@gmail.com", "from sender");
                    // You can specify the host name or ipaddress of your server
                    // Default in IIS will be localhost 
                    smtpClient.Host = ConfigurationManager.AppSettings["smtpClientHost"];

                    //Default port will be 25
                    smtpClient.Port = int.Parse(ConfigurationManager.AppSettings["portNumber"]); //From config file
                    //From address will be given as a MailAddress Object
                    message.From = fromAddress;
                    // To address collection of MailAddress
                    message.To.Add(toAddress);
                    message.Subject = ConfigurationManager.AppSettings["Subject"]; //Subject from config file
                    message.IsBodyHtml = false;
                    message.Body = "Hello World";
                    smtp.DeliveryMethod = SmtpDeliveryMethod.NetWork                    
                    smtpClient.Send(message);
                }
                catch (Exception ex)
                {
                   throw ex.ToString();
                }

配置设置为:

<configuration>
    <appSettings>
        <add key="smtpClientHost" value="mail.localhost.com"/> //SMTP Client host name
        <add key="portNumber" value="25"/>
        <add key="fromAddress" value="defaultSender@gmail.com"/>
        <add key="displayName" value="Auto mail"/>
        <add key="Subject" value="Auto mail Test"/>
    </appSettings>
</configuration>

将这些设置EnableSSL = truedefaultCredentials="false"放在您的web中。配置设置。Gmail smtp服务器需要SSL设置为真,mailclient.UseDefaultCredentials = false应该是假的,如果你提供你的凭据。

更新网页。配置设置:

<mailSettings>
  <smtp from="from@gmail.com" deliveryMethod="Network">
    <network userName="from@gmail.com" password="mypassword" host="smtp.gmail.com" defaultCredentials="false" port="587" enableSsl="true"/>
  </smtp>             
</mailSettings>

并在web.config中提供设置后检查此短代码以发送邮件。即使它发送电子邮件快得多,而不是在邮件发送函数中创建smtpclient设置时指定设置。

Public void SendEmail(string toEmailAddress, string mailBody)
        {
            try
            {
                MailMessage mailMessage = new System.Net.Mail.MailMessage();
                mailMessage.To.Add(toEmailAddress);
                mailMessage.Subject = "Mail Subjectxxxx";
                mailMessage.Body = mailBody;
                var smtpClient = new SmtpClient();
                smtpClient.Send(mailMessage);
                return "Mail send successfully";
            }
            catch (SmtpException ex)
            {
                return "Mail send failed:" + ex.Message;
            }

在我身边工作很好…

var smtpClient = new SmtpClient(gmailSmtpServer, gmailSmtpPort)
{
   Credentials = new NetworkCredential(FromGEmailAddress, FromGEmailAddressPassword),
   EnableSsl = true
};
try
{
    using (var message = new MailMessage(fromaddress, toaddress))
    {
      message.Subject = "Test";
      message.Body = "Testing this shit!";
      smtpClient.Send(message);
     return true;
    }
}
catch (Exception exc)
{
  // error
  return false;
}