Ошибка C # SmtpClient: не локальный хост? - PullRequest
1 голос
/ 11 сентября 2009

Я отправляю простое письмо с вложением, используя SmtpClient, но получаю эту ошибку:

Почтовый ящик недоступен. Ответ сервера был: не локальный хост example.com, а не шлюз

System.Net.Mail.SmtpFailedRecipientException: Почтовый ящик недоступен.

Ответ сервера: не локальный хост example.com, не шлюз в System.Net.Mail.SmtpTransport.SendMail (отправитель MailAddress, получатели MailAddressCollection, String deliveryNotify, SmtpFailedRecipientException &ception) в System.Net.Mail.SmtpClient.Send (сообщение MailMessage)

И код:

public static void CreateMessageWithAttachment(byte[] compressed)
    {
        // Create a message and set up the recipients.
        MailMessage message = new MailMessage(
           "noreply@example.com",
           "recepient@example.com",
           "Hello.",
           "How are you?");

        // Create  the file attachment for this e-mail message.
        Stream attachStream = new MemoryStream(compressed);
        Attachment attachment = new Attachment(attachStream, MediaTypeNames.Application.Octet);
        message.Attachments.Add(attachment);

        //Send the message.
        SmtpClient client = new SmtpClient("123.12.12.123");
        // Add credentials if the SMTP server requires them.
        client.Credentials = CredentialCache.DefaultNetworkCredentials;

        client.Send(message);

        attachment.Dispose();
    }

Конечно, домен и IP действительны в исходном коде. Я пытался использовать как "localhost" и IP, но получаю ту же ошибку. Поиск в Google дал 3 результата, полезный из которых, кажется, на китайском и брандмауэр не позволяет мне перевести его.

Заранее спасибо.

1 Ответ

3 голосов
/ 11 сентября 2009

Я искал: C# smtpclient error The server response was: not local host example.com, not a gateway и получил 27K + результатов.

Если вы используете localhost, посмотрите на эту страницу , там написано:

This is a relay error. Make sure you can relay through the SmtpMail.SmtpServer 
either by your IP address, by your MailMessage.From address, or if you need to 
authenticate, check out 3.8 How do I authenticate to send an email? 

If SmtpMail.SmtpServer is set to "127.0.0.1" or "localhost", and you are using 
the built in IIS SMTP Service, you can allow relaying for 127.0.0.1 by 

1) Opening the IIS Admin MMC
2) Right-Clicking on the SMTP Virtual Server and selecting Properties
3) On the Access tab, click the Relay button
4) Grant 127.0.0.1 (or the IP address used by System.Web.Mail) to the 
   Computers list.
5) Close all dialogs
6) Restarting the SMTP Service
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...