2011-02-07 5 views
0

Я нашел этот сайт очень полезным для всех моих ранее возникших проблем, но я не смог получить помощь в следующем.ASP Ошибка отправки электронной почты

Я разработал веб-сайт, который может отправлять электронные письма. На локальном хосте это работает совершенно нормально. когда я говорю localhost, я могу получать отправленные электронные письма, но когда я загружаюсь на сервер, я сталкиваюсь с этой ошибкой, когда он начинает процесс отправки писем.

«Попытка подключения не удалась, поскольку подключенная сторона не ответила после определенного периода времени, или установить соединение не удалось, так как подключенный хозяин не смог ответить Ipaddress: PORT»

Пробовал пинг на adrress для порта и ping работает.

Вот код

string strFrm = ConfigurationManager.AppSettings["FromAddress3"].ToString(); 

string[] receive = {"emailaddress1","emailaddress2","emailaddress3","emailaddress4"}; 

string subject = "New registration"; 

string body = "<html><head><title>Registered Candidates</title></head><body>bla bla bla</body></html>"; 

//I however have put reg exp validator on the form 

if(txtEmail.Text.Contains("@") && txtEmail.Text.Contains(".")) 
{ 
    for (int i = 0; i <= receive.Length - 1; i++) 
    { 
     MailMessage msg = new MailMessage(strFrm, receive[i], subject, body); 
     msg.IsBodyHtml = true; 

     SmtpClient client = new SmtpClient(); 

     client.Send(msg); 
    } 

    Response.Redirect("Thankyou.html"); 

Web.config

<mailSettings> 
    <smtp from="from address"> 
    <network host="server" port="25" 
userName="username" password="password" /> 
    </smtp> 
</mailSettings> 

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

+0

Имеет ли сервер производства SMTP включен на локальном хосте? Вы настроили параметры SMTP в Web.config? –

+0

Спасибо за ответ Якоб. Даже в моем локальном хосте программа подключается к SMTP-серверу, а затем отправляет почту на указанные адреса электронной почты. Да. Я настроил параметры в веб-конфигурации, а также, как вы можете видеть выше, я попытался выполнить настройки при отправке почты. –

+0

Не похоже, что вы переопределяете адрес SMTP? И уверены ли вы, что сервер SMTP включен? –

ответ

0

решаемые ..: D

Мой хостинг сервер был GoDaddy и мой хостинг план поддерживается только возраст старый System.Web.Mail концепции CDOSys т.е..

Вот код.

using System.Web.Mail; 

private void SendEmail() 
{ 
const string SERVER = "relay-hosting.secureserver.net"; 
MailMessage oMail = new System.Web.Mail.MailMessage(); 
oMail.From = "[email protected]"; 
oMail.To = "[email protected]"; 
oMail.Subject = "Test email subject"; 
oMail.BodyFormat = MailFormat.Html; // enumeration 
oMail.Priority = MailPriority.High; // enumeration 
oMail.Body = "Sent at: " + DateTime.Now; 
SmtpMail.SmtpServer = SERVER; 
SmtpMail.Send(oMail); 
oMail = null; // free up resources 
} 

Спасибо Якоба за активное участие! :)

+0

Вы поставляете пустое имя пользователя/pw сейчас? Измените исходный вопрос с вашими изменениями (это ответ), и не забудьте изменить логин/pw серверов. –

+0

(вы должны удалить этот ответ сейчас) –

1

Убедитесь, что вы указываете на службу SMTP на вашем производственном сервере, возможно, она не работает на «localhost», как на вашей машине разработки. И пинг сервера на самом деле не говорит вам, включен ли SMTP.

Я вообще предпочитаю настройки SMTP для своих сайтов в web.config:

<system.net> 
    <mailSettings> 
    <smtp deliveryMethod="Network" from="[email protected]"> 
     <network host="localhost" port="25" userName="user" password="pass" /> 
    </smtp> 
    </mailSettings> 
</system.net> 

UPDATE:

Если ваш код работает на вашем компьютере, и он не будет работать на сервере с тем же конфигурации, то, вероятно, что-то блокирует. Я предлагаю попробовать играть с простой реализацией, которая ничего не делает, кроме тестирования конфигурации SMTP серверов. Вы можете попробовать <smtp deliveryMethod="SpecifiedPickupDirectory">, это очень полезно при тестировании кода, который отправляет электронные письма. См. SmtpDeliveryMethod Enumeration на MSDN.

+0

Отредактировано web.config. Это выглядит примерно так <сетевой хост = порт "сервер" = "25" UserName = "имя пользователя" пароль = "проход" /> и удалили NetworkCredential пс = новый NetworkCredential (USR, PWD); client.UseDefaultCredentials = false; client.Credentials = nc; из программы. но все же я получаю то же самое. Когда я сказал localhost, я разместил его на IIS, и эта страница теперь подключается к тому же серверу smtp, что и в we.config, чтобы отправить почту. –

+0

Обновите свой вопрос своими последними изменениями, включая ваш web.config. :) –

+0

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

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