Отправка электронной почты с ASP.net - PullRequest
2 голосов
/ 01 декабря 2011

Так что я искал stackoverflow для способа отправки электронных писем с использованием учетной записи Gmail через веб-сайт asp ...

Я пробовал много способов, в том числе Отправка электронной почты в .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;
 }

в моем web.config у меня есть

  <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>

Согласно нескольким сайтам, которые я посетил, это должно работать !!! .. но это не так.

Есть еще что-то, что я делаю не так?

Ответы [ 6 ]

2 голосов
/ 01 декабря 2011

Вы никогда не устанавливаете имя входа, добавьте его перед вашим методом smtpClient.Send ().

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

Загрузите файл web.config через ConfigurationManager, если он не работает автоматически.

1 голос
/ 01 декабря 2011

Твой код мне подходит.

Попробуйте сознательно ввести неверные учетные данные. Если вы получили другое сообщение об ошибке, вы подключены к Gmail, и там есть проблема.

Если вы столкнулись с той же проблемой тайм-аута, вероятно, это не проблема программного обеспечения, а проблема с брандмауэром.

longshot - обновление Возможно, есть проблема с web.config? Попробуйте указать все в коде, как это. У меня это работает в реальной жизни с 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);

Удачи ..

1 голос
/ 01 декабря 2011

Как указано на на этой странице , попробуйте установить telnet, чтобы посмотреть, сможете ли вы подключиться к почтовому серверу.Это может быть проблема с брандмауэром на вашем сервере.Вы также можете попробовать использовать другой порт, как указано в ссылке.

0 голосов
/ 01 декабря 2011

Установите эти параметры EnableSSL = true и defaultCredentials="false" в настройках web.config. SMTP-серверу Gmail требуется, чтобы для SSL было установлено значение true, а mailclient.UseDefaultCredentials = false должно быть равно false, если вы предоставляете свои учетные данные.

Обновить настройки Web.Config:

<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;
            }

Очень хорошо работает на моей стороне ..

0 голосов
/ 01 декабря 2011
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;
}
0 голосов
/ 01 декабря 2011

Можете ли вы попробовать это?

            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>
...