Не используйте пакет размера 2 000 байтов для тестирования. 2 000 байтов могли быть больше затем MTU некоторых устройств, делающих их фрагмент / пакеты отбрасывания, какая привычка дают Вам четкое представление о потерях при передаче просто из-за ошибки канала.
Для контроля потери пакетов от клиента к серверу в беспроводных сетях с плохой возможностью соединения я иногда просто использую ping. Команда ping Linux дает хорошее реферирование в конце как
--- www.l.google.com ping statistics ---
10 packets transmitted, 9 received, 10% packet loss, time 8999ms
rtt min/avg/max/mdev = 102.921/123.423/144.075/12.673 ms
Таким образом, можно оставить ping, работающий в течение ночи и когда Вы закончите использование ping Ctrl + C затем, Вы сможете видеть процент потери пакетов и т.д.
Это - также не лучший способ, поскольку это мог быть один путь проблема в канале. Таким образом, пакеты могли бы достигнуть места назначения, но по некоторым причинам могли потеряться ответы. В таком выполнении случаев (на месте назначения)
tcpdump -v -i eth0 'icmp'
видеть, достигают ли запросы ping даже места назначения, помогает очистить вещи.
Если по некоторым причинам клиент Linux в не доступная попытка установить cygwin и использовать ping cygwin. Это могло бы быть тем же как ping Linux и должно сказать Вам статистику в конце.
Я в основном использовал Ваш тот же код - и большое множество вложений, через которые все проникли очень хорошо. Я довольно уверен, что Ваша проблема за пределами PowerShell - у Вас есть СПАМ или другая установка фильтра на сервере SMTP, которым Вы связываетесь с? есть ли другой сервер SMTP, с которым можно говорить, который является чистым?
Для ссылки вот пример кода, с которым я настраивал параметры для тестирования:
function SendMail() {
# create mail message
$mail = New-Object System.Net.Mail.MailMessage
$mail.From = "Beuy@serverfault.com"
$mail.To.Add("Beuy@serverfault.com")
$mail.Subject = "Here is your attached file"
$mail.Body = "See attached file"
# create attachment
$att = New-Object System.Net.Mail.Attachment "C:\Test.txt"
$mail.Attachments.Add($att)
# send email
$smtp = New-Object System.Net.Mail.SmtpClient("mail.serverfault.com")
$smtp.Send($mail)
}
если ($e-ine'')-ine, кажется, опечатка?
действительно необходимо включать значения... При создании вложения maxybe существует проблема с путем или именем файла? Попытайтесь использовать "FullName"(path+filename) Файла.
-ine
эквивалентно -ne
- я полагаю, что это существует как подсказка кода, что это нечувствительно к регистру.
– MattB
11 May 2010 в 16:46
Можно значительно сократиться, код при помощи Отправляют-MailMessage (V2 cmdlet для пользования электронной почтой). Это могло бы также решить Вашу проблему из-за нескольких вещей:
Пример, который Отправляет-MailMessage использование, ниже. В нем хеш-таблица параметров создается и, при помощи вместо $ перед именем переменной, каждый из параметров становится параметром для Отправки.
Для большего количества примеров см.: Отправка Автоматизированных электронных писем с Отправляет-MailMessage, ConvertTo-HTML и Модуль Планировщика задач Пакета PowerShell
function SendMail($Attachment) {
# create mail message
$MessageParameters = @{
From = "Beuy@serverfault.com"
To = "Beuy@serverfault.com"
Subject = "Here is your attached file"
Body = "See attached file"
Attachments = $Attachment
SmtpServer = "mail.serverfault.com"
}
Send-MailMessage @MessageParameters
}
Я полагаю, что это - намного больше способа "PowerShell" сделать вещи, и я надеюсь, что он избавляется от Вашей проблемы.
Надеюсь, это поможет,
James