2014-10-09 4 views
0

Я использую следующий фрагмент кода для отправки почты, которая отлично работает при запуске на локальном хосте. Я загрузил сайт на сервер и теперь, когда я пытаюсь добиться того же, почта не будет отправлена. Пожалуйста, помогите.Локально почта отправляется, но при загрузке на сервер почта не отправляется в asp.net

public void send_click(object sender, EventArgs e) 
{ 
    mail(); 
} 

public void mail() 
{ 
    SmtpClient smtpClient = new SmtpClient(); 

    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 

    MailAddress fromAddress = new MailAddress(tb_email.Text, tb_name.Text); 

    smtpClient.Host = "smtp.gmail.com"; 
    smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
    smtpClient.UseDefaultCredentials = false; 

    smtpClient.EnableSsl = true; 


    smtpClient.Credentials = new NetworkCredential("[email protected]", "***Password***"); 

    smtpClient.Port = 587; 

    message.From = fromAddress; 

    message.To.Add(new MailAddress("[email protected]")); 

    // message.Subject = ddlSubject.SelectedItem.Text; 

    //message.CC.Add("[email protected]"); 

    message.IsBodyHtml = true; 
    StringBuilder msg = new StringBuilder(); 

    msg.Append(tb_msg.Text); 
    msg.Append("<br/>"); 
    msg.Append(tb_email.Text); 
    message.Body = msg.ToString(); 




    //this code adds event handler to notify that mail is sent or not 
    smtpClient.SendCompleted += new SendCompletedEventHandler(smtpClient_SendCompleted); 

    smtpClient.Send(message); 
    if (smtpClient.EnableSsl == true) 
    { 

     string CloseWindow = "alert('Message Sent Successfully!');"; 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", CloseWindow, true); 
    } 
    else 
    { 
     string CloseWindow = "alert('Problem in Sending mail...try later!');"; 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", CloseWindow, true); 
    } 


} 
void smtpClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) 
{ 
    System.Net.Mail.MailMessage mailMessage = e.UserState as System.Net.Mail.MailMessage; 
    if (e.Cancelled || e.Error != null) 
    { 

     Response.Write(e.Error.Message); 
     Response.Write(e.Error.StackTrace); 
    } 
    else 
    { 
     Response.Write("Email sent successfully"); 
    } 
} 
+0

На каком сервере вы принимали Если сервер местоположения находится далеко от вас Google избежать регистрации из другого места вам необходимо изменить настройки в вашем аккаунте Google –

+0

Проверьте средство просмотра событий сервера. Предусмотрены ли какие-либо предупреждения для smtpsvc или ошибки для asp.net? Вы пробовали использовать pickupdirectory? С этим вы можете убедиться, что ваше приложение работает нормально, и ошибка, скорее всего, вызвана сервером/брандмауэром/ISP – Marco

ответ

0

Если вы загрузили на сервер предприятия: 1. Убедитесь, что ваш брандмауэр не блокирует исходящие запросы на w3wp.exe, который является процесс IIS Worker; 2. Проверьте, какое сообщение об ошибке вы получаете на странице, а также в средстве просмотра событий;

То, как вы отправили, почти такое же, как я отправлял, но без события sendCompleted, поэтому это не должно быть проблемой с кодом. Также это почти то же самое, что и this post и this one.

0

Вместо SmtpClient smtpClient = new SmtpClient(); ли SmtpClient smtpClient = new SmtpClient("xx.xx.xxx.xx");

Где xx.xx.xxx.xx является IP-адрес domain.If вы используете сказать GoDaddy сервер, он будет указать адрес IP-для вас разместить ваш site.If вы не знаете ip-адрес просто ping имя сайта. Например, если ваше имя сайта sum1.com, то выполните ping sum1.com..it покажет ip-адрес, предоставленный вашим сервером.

0

Мы не можем сказать отсюда, если ошибка находится в вашем приложении или в вашей среде хостинга. Есть несколько шагов, которые вы можете предпринять, чтобы сузить источник своей проблемы.

Прежде всего: проверьте Windows EventLog. Если есть ошибки Asp.net или smtpsvc-предупреждения, это может быть связано и дает вам представление о том, что не удается!

Чтобы проверить, если ваше приложение сам по себе работает и не бросать исключения при попытке отправить изменение почты Параметры почты в web.config

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
     <specifiedPickupDirectory pickupDirectoryLocation="C:\smtp"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

Если вы теперь хотите отправить письмо внутри вас приложение, оно будет упаковано в c: \ smtp. Если это приложение работает нормально, и проблема может быть вызвана вашим сервером, брандмауэром или интернет-провайдером.

Во-вторых fireup ЦМД оболочки и проверьте ваши настройки SMTP правильно по telnetting на него:

telnet mail.yourmailrpvider.net 25 

Если выдает ошибку, то очень вероятно, что ваш брандмауэр блокирует SMTP трафик и вам нужно свяжитесь с вашим администратором

0

PLS изменит smtpClient.Host и учетные данные в соответствии с сервером, на котором вы загрузили приложение.

+0

. Каким должен быть клиентский хост? – Chelsea

Смежные вопросы