none
не могу отправить письмо из скрипта RRS feed

  • Вопрос

  • собственно проблема. при запуске этого на powershell`e:

    http://xaegr.wordpress.com/2008/01/24/send-smtpmailps1/

    либо этого

    $mail = New-Object System.Net.Mail.MailMessage
    $mail.From = "from@mail.ru";
    $mail.To.Add("to@mail.ru");
    $mail.Subject = "Test AUTH";
    $mail.Body = "Test";
    # Подключаемся к серверу
    $smtp = New-Object System.Net.Mail.SmtpClient("smtp.mail.ru");
    $smtp.Credentials = New-Object System.Net.NetworkCredential("login", "pass");
    # Отправляем
    $smtp.Send($mail);

    вылетает ошибка:

    Исключение при вызове "Send" с "1" аргументами: "Сбой при отправке сообщения электронной почты."
    В :строке:12 позиция:10
    + $smtp.Send <<<< ($mail);

    пытался гуглить, безуспешно. с учетом того что недавно возникла такая необходимость, разобраться в самом powershell`e времени особо не было
    стоит win7 с powershell`ом, который стоял. че думать??
    16 ноября 2009 г. 14:50

Ответы

  • Скрипт, котрый вы привели, вполне рабочий. (проверил, подставив свои реквизиты для mail.ru)

    Видимо, происходит какая-то ошибка во время соединения/передачи c вашей раб. станции, на которой вы запускаете скрипт, на smtp-сервер. Например,
    - у вас не доступа к smtp.mail.ru (перекрыто firewall'ом),
    - вас забанили на mail.ru,
    - у вас плохой канал и связь рвется во воремя передачи сообщения.
    и т.д. и т.п.

    Попробуйте, для начала, отправить то же самое письмо с проблемной рабочей станции не скриптом, но "руками" (при помощи telnet) или почтовым клиентом.

    • Предложено в качестве ответа Vasily GusevModerator 16 ноября 2009 г. 16:29
    • Отменено предложение в качестве ответа XomYa4ina 16 ноября 2009 г. 18:37
    • Помечено в качестве ответа XomYa4ina 16 ноября 2009 г. 18:47
    16 ноября 2009 г. 15:32

Все ответы

  • Скрипт, котрый вы привели, вполне рабочий. (проверил, подставив свои реквизиты для mail.ru)

    Видимо, происходит какая-то ошибка во время соединения/передачи c вашей раб. станции, на которой вы запускаете скрипт, на smtp-сервер. Например,
    - у вас не доступа к smtp.mail.ru (перекрыто firewall'ом),
    - вас забанили на mail.ru,
    - у вас плохой канал и связь рвется во воремя передачи сообщения.
    и т.д. и т.п.

    Попробуйте, для начала, отправить то же самое письмо с проблемной рабочей станции не скриптом, но "руками" (при помощи telnet) или почтовым клиентом.

    • Предложено в качестве ответа Vasily GusevModerator 16 ноября 2009 г. 16:29
    • Отменено предложение в качестве ответа XomYa4ina 16 ноября 2009 г. 18:37
    • Помечено в качестве ответа XomYa4ina 16 ноября 2009 г. 18:47
    16 ноября 2009 г. 15:32
  • Спасибо, это уже результат. Буду разбираться. Фаервол отключил, пробовал вбивать работающий аккаунт с почтового клиента(клиент работает), ничего... Может стоит попробовать сам powershell установить заново. Он шел с Win 7 x64, может в этом собака зарыта
    16 ноября 2009 г. 18:40
  • Спасибо, это уже результат. Буду разбираться. Фаервол отключил, пробовал вбивать работающий аккаунт с почтового клиента(клиент работает), ничего...

    Клиент с работающим аккаунтом на том же компьютере, на котором скрипт запускаете?
    17 ноября 2009 г. 6:29
  • У меня данный вариант вылетает с той же ошибкой, немного переделал пример для C# из SDK:

    # Letter

    $To = "to@mail.ru"
    $From = "from@mail.ru"
    $Subject = "Letter Header"
    $Body = "Letter Body"

    $MailMessage = New-Object Net.Mail.MailMessage($From, $To, $Subject, $Body)

    # Client

    $Server = "smtp.mail.ru"
    $Port = 25
    $Login = "from"
    $Password = "pass"

    $SmtpClient = New-Object Net.Mail.SmtpClient($Server, $Port)
    $SmtpClient.Credentials = New-Object Net.NetworkCredential($Login, $Password)

    $SmtpClient.Send($MailMessage)
    17 ноября 2009 г. 8:20
  • >У меня данный вариант вылетает с той же ошибкой, немного переделал пример для C# из SDK

    У меня скрипт из первого поста топика отработал без ошибок. Письмо ушло без проблем и благополучно упало в почтовый ящик на mail.ru
    Конфигурация: WinXP Prof SP3, PoSh v1.0, dotNet 3.5 SP1 + postfixes (kb959209, etc.).
    17 ноября 2009 г. 8:39
  • Win-7 Enterprise (7600 RTM), Posh 2.0

    Попробуйте пожалуйста мой вариант, интересно отработает он на первой версии или нет.
    17 ноября 2009 г. 8:47
  • Win-7 Enterprise (7600 RTM), Posh 2.0

    Попробуйте пожалуйста мой вариант, интересно отработает он на первой версии или нет.

    Никаких проблем. Проверил - работает.

    Может ли кто-либо еще проверить, как отработает скрипт при других сочетаниях ОС, PoSh, dotNet?
    17 ноября 2009 г. 9:34
  • > Никаких проблем. Проверил - работает.

    Спасибо
    17 ноября 2009 г. 9:42
  • Народ... не соображаю в чем может быть проблема... из этого скрипта не отправляется напрямую из под WIN7 x64, отключал nod, брэнмауэт отключил.... ничего не отправляет
    из-под виртуальной машины (Windows Virtual PC) этот скрипт отработал. Задача усложнилась, надо теперь написать самостоятельное приложение, чтоб вшить туда логин/пароль, т.к. вариант http://xaegr.wordpress.com/2008/07/21/send-mail-from-script/
    а в частности:

    $SecStr = Get-Content password.txt | ConvertTo-SecureString

    $mail = New-Object System.Net.Mail.MailMessage
    $mail.From = "from@mail.ru";
    $mail.To.Add("to@mail.ru");
    $mail.Subject = "ТЕМА";
    $mail.Body = "ТЕЛО";

    # Подключаемся к серверу
    $smtp = New-Object System.Net.Mail.SmtpClient("smtp.mail.ru");
    $smtp.Credentials = New-Object System.Net.NetworkCredential("from", "parol");
    $SecStr = Get-Content ..\password.txt | ConvertTo-SecureString
    #$smtp.Credentials = New-Object System.Net.NetworkCredential("from", $SecStr);

    # Отправляем
    $smtp.Send($mail);


    тоже работать отказывается, сказу как только с выделенной строчки убираю коментарий.
    Почтовый клиент отправляет. Почему не отправляется скриптом из под самой семерки? Почему вываливаются ошибки из под виртуальной машины когда пароль хочу из файла взять? Написал прогу на C#, она тоже не отрабатывает... ну не сносить же 7-ку??? В чем может быть проблема? Может nod снести?
    20 ноября 2009 г. 12:40
  • да, аккаунт тот же
    21 ноября 2009 г. 10:30
  • >тоже работать отказывается, сказу как только с выделенной строчки убираю коментарий.
    Строка, в которой происходит оштбка изменилась, IIUC.
    А каково само сообщение об ошибке на этот раз?

    IIUC C# также использует dotNet. Было бы интересно попробовать отправить письмо при помощи средства, не использующего dotNet (например, скриптом на JScript или VBScript http://gallery.technet.microsoft.com/ScriptCenter/en-us/a0e7a8ab-0311-4882-bd39-1638e34e4026) и еще как-либо, задействуя dotNet и сравнить результаты.



    >Может nod снести?
    тоже неплохой вариант.
    а других сторонних файерворллов/антивирусов и т.п. в системе не установлено?
    22 ноября 2009 г. 12:00