2010-09-21 3 views
0

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

System.Net.Mail.MailMessage msgMail = new System.Net.Mail.MailMessage(); 
msgMail.From = new System.Net.Mail.MailAddress("[email protected]"); 
msgMail.To.Add(new System.Net.Mail.MailAddress("[email protected]")); 
string currentuseremail = web.CurrentUser.Email.ToString(); 
msgMail.Subject = "Request:Joing into the myitem.Title.ToString()"; 
msgMail.IsBodyHtml = true; 
string strBody = "test mail"; 
msgMail.Body = strBody; 
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 
client.Send(msgMail); 

и я настроен web.config как:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="PickupDirectoryFromIis"> 
      <network host="smtpout.secureserver.net" port="25" defaultCredentials="true"/> 
     </smtp> 
    </mailSettings> 
    <settings> 
     <httpWebRequest useUnsafeHeaderParsing="true"/> 
    </settings> 
</system.net> 
+0

\t \t \t \t \t \t \t \t \t <сеть host = "smtpout.secureserver.net" port = "25" defaultCredentials = "true" /> \t \t \t \t \t \t \t \t \t \t \t \t \t Abhimanyu

+0

Вы пробовали положить это в попытке поймать блок? – user279521

+0

ya.i положил весь этот код в try catch block. И во время отладки, не отображая никаких исключений – Abhimanyu

ответ

0

Я считаю, что SMTP на компьютере, на котором работает IIS, настроен неправильно или он не работает вообще. Возможно, вы увидите электронные письма, отправленные в одной из подпапок Inetpub.

Идентификатор, который вы установили PickupDirectoryFromIis, это означает, что локальный SMTP-сервер заберет эти и реле другому SMTP.

1

Я считаю, что проблема в вашем случае может быть атрибутом deliveryMethod в web.config; вам может потребоваться подтвердить свой хост, но этот метод будет автоматически удалять файл для электронной почты на веб-сервере, ожидая, что агент передачи почты заберет файлы и отправит их позже. Вероятно, сетевой элемент не используется вообще, так как у меня есть значение PickupDirectoryFromIis.

+0

как проверить атрибут deliveryMethod с моим хостом? – Abhimanyu

0

Несомненно, ваш способ доставки должен быть сети?

http://msdn.microsoft.com/en-us/library/system.net.mail.smtpdeliverymethod.aspx

В противном случае вам потребуется IIS/SMTP установлен на локальной машине для того, чтобы по почте, чтобы быть отправлены, IIRC.

+0

IIS/SMTP установлены на моем сервере, и они запущены. – Abhimanyu

+0

Хмм интересно:/ – Lloyd

+0

, когда я изменил атрибут метода доставки до доставкиMethod = 'SpecifiedPickupDirectory' <указанныйPickupDirectory pickupDirectoryLocation = "c: \ maildrop" />, тогда я получаю почту в этот каталог – Abhimanyu

0

Проверьте, работает ли ваш локальный SMTP-сервер. Поскольку ваш DeliveryMethod - PickupDirectoryFromIis, письма будут записаны в локальный каталог пикапов, который будет отправлен сервером SMTP (который является частью IIS).

+0

мой локальный smtp-сервер. – Abhimanyu

1

Сначала создайте локальный каталог, чтобы получить почту. Это позволит исключить любые проблемы кода, прежде чем устранить дальше:

How to test asp.net email is being sent

<mailSettings> 
    <smtp deliveryMethod='SpecifiedPickupDirectory'> 
     <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop" /> 
    </smtp> 
</mailSettings> 

<mailSettings> 
    <smtp from="[email protected]"> 
     <network host="xx.xx.xxx.xx" port="25" defaultCredentials="true"/> 
    </smtp> 
</mailSettings> 
+0

, когда я изменил web.config на указанный выше, затем письма переместились в эту папку. – Abhimanyu

+0

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

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