2012-05-17 2 views
0

Я использую этот код для отправки электронной почты в asp.net:Какая ошибка? (Отправка электронной почты в asp.net)

Использование System.Net.Mail

public string SendEmail() 
{ 
    SmtpClient obj = new SmtpClient(); 
    MailMessage Mailmsg = new MailMessage(); 
    Mailmsg.To.Clear(); 

    Recievers = new MailAddressCollection(); 
    Recievers.Add(txtToAddress.Text); 
    SenderName = "Info"; 
    SenderEmail = txtFromAddress.Text; 
    Subject = "subj"; 
    Body = "body"; 
    UseBcc = false; 

    if (UseBcc) 
    { 
     foreach (MailAddress RecieverItem in Recievers) 
     { 
      Mailmsg.Bcc.Add(RecieverItem); 
     } 
    } 
    else 
    { 
     foreach (MailAddress RecieverItem in Recievers) 
     { 
      Mailmsg.To.Add(RecieverItem); 
     } 
    } 

    Mailmsg.From = new MailAddress(SenderEmail, SenderName, System.Text.Encoding.UTF8); 
    Mailmsg.Subject = Subject; 
    Mailmsg.SubjectEncoding = Encoding.UTF8; 
    Mailmsg.BodyEncoding = System.Text.Encoding.UTF8; 
    Mailmsg.IsBodyHtml = false; 

    obj.Host = mail.domain.com; 

    System.Net.NetworkCredential BasicAuthenticationInfo = new System.Net.NetworkCredential("[email protected]", "password"); 

    obj.UseDefaultCredentials = false; 
    obj.Credentials = BasicAuthenticationInfo; 

    Mailmsg.Body = Body; 
    Mailmsg.IsBodyHtml = true; 
    try 
    { 
     obj.Send(Mailmsg); 
     return "sent"; 
    } 
    catch (Exception ex) 
    { 
     return ex.ToString(); 
    } 
} 

Это правильно отправляет сообщения приемники, которые определены в мой домен (например, [email protected]), но я не могу отправить электронное письмо на другие почтовые серверы (например, [email protected]).

Что не так в моем коде?

(Может это относится к свойствам SmtpClient? Я поставил smtpclient.host в mail.mydomain.com и использовать имя пользователя и пароль одного из моих почтовых учетных записей, которые определены в моем домене)

Спасибо

+0

это бросить ли какие-либо исключения? Вы проверили с администраторами SMTP-сервера (заблокировали ли вы свою программу на SMTP-сервере, чтобы предотвратить ее отправку?) –

+0

Да, исключение: System.Net.Mail.SmtpFailedRecipientException: Почтовый ящик недоступен. Ответ сервера: Нет такого пользователя здесь, в System.Net.Mail.SmtpTransport.SendMail (отправитель MailAddress, получатели MailAddressCollection, String deliveryNotify, SmtpFailedRecipientException & exception) в System.Net.Mail.SmtpClient.Send (сообщение MailMessage) в _Default.SendEmail() –

+0

вы можете проверить свойство «FailedRecipient» на исключение SmtpFailedRecipientException. Вы уверены, что это правильный адрес получателя? –

ответ

5

Это должно быть что-то связанное с вашим сервером обмена. в обмене есть правила транспорта, которые определяют, как вы можете общаться с внешним миром.

http://www.msexchange.org/articles_tutorials/exchange-server-2007/management-administration/restricting-users-send-receive-external-messages-exchange-server-2007.html

вы должны получить некоторое исключение при отправке по электронной почте вне сети

System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.1.1 User unknown 
    at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception) 

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

Возможно, это может вам помочь. http://www.petri.co.il/configuring-exchange-2007-send-connectors.htm

также я хотел бы предложить вам разделить эту проблему на https://serverfault.com/

+0

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

+0

Как я могу ее решить? –

+0

проверить мой ответ Я добавил еще несколько деталей –