We rise up for the things we believe in over and over again

Поднадоел photobucket.com. Вот реально поднадоел. Интерфейс неповоротливый, реклама всякая опять же.
Присмотрелся поближе к imgur.com. Раньше он меня жутко бесил своими тормозами, сейчас его в этом плане облагородили. Но не только в этом. Есть там интересная возможность - заливать картинки через почту. Весьма удобно для пакетной обработки, а еще это дело можно заскриптовать.
Не думал, что эта задачка будет настолько интересной

А теперь разбираем по складам.
Весь блок #setting up variables ничего особого из себя не представляет. Там описываются все параметры доступа к картинкам и ящику, через который будем все отсылать. Мой ящик - на gmail.com, потому работаем на примере этого почтового сервиса.
Выбрать все картинки из указанной папки - тоже ничего особого. Вся коллекция будет сохранена в переменной $files.
Блок #setting up smtp client уже любопытнее. Там любопытна конструкция
$smtp.Credentials = New-Object System.Net.NetworkCredential($SMTPUsername, $SMTPPassword)
$smtp.EnableSSL = $true
которая говорит скрипту, что с почтой надо общаться по зашифрованному каналу связи. В противном случае gmail пошлет нас подальше с вердиктом
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required
Еще одна деталь. Для того, чтобы это все сработало необходимо уже в настройках аккаунта gmail включить доступ для небезопасных приложений. Материал по этому поводу в сети есть. Если этого не сделать - gmail будет отбивать любые попытки работы скрипта с ящиком.
Блок #settung up message также не представляет ничего особого. Более того, там обязательными для заполнения полями будут всего лишь $msg.To.add($MailTo) и $msg.From = $MailFrom (Куда и от кого, соответственно). Адресом отправки всегда будет [email protected], а по адресу отправителя будет ясно, какая учетка на самом Imgur.com шлет картинки.
А вот секция #attach files in upload folder выпила у меня крови в три своих горла.
Сама по себе она стандартнейшая. Для каждого файла в коллекции $files, собранной ранее, делаем вложение в письмо с этим файлом. Все бы ничего, но в первой версии этого блока картинки цеплялись к письму и отсылались, но на Imgur ничего не появлялось. В чем проблема?
Как раз пока писалась первая версия скрипта, шел диалог с Линда Кайе по поводу ранее не срабатывавшей отправки картинок. Среди предположений были и лишние символы в имени файлов, и длина имени... В итоге сошлись на том, что картинки рушил формат письма. Линда, я тебя и огорчу, и порадую. Это не совсем так.
Сравнивая два письма, посланных через скрипт и через web-интерфейс самого Gmail, выяснил, что формат их был один и тот же - multipart/mixed. Тем не менее, скриптовое письмо вложения по дороге теряло. А вот в чем отличие нашлось, так это в формате самих вложений: в письмах, отправленных через web-интерфейс, формат картинок JPG показывался как Content-Type: image/jpg. А в сообщениях, сформированных скриптом, те же картинки шли в виде Content-Type: application/octet-stream. И вот именно это и не позволяло уже самому Imgur найти в письме картинки и обработать их. Для того, чтобы избавиться от этой напасти в блок формирования вложений в скрипт и добавлена строка:
$MailAttachment.ContentType.MediaType = "image/$($file.extension.substring(1))"
Причем действует она хитро. В зависимости от того, какое расширение у обрабатываемой картинки, она сменит тип контента. Есть JPG - будет "image/JPG", обрабатываем PNG - получим "image/PNG".
Завершающая же строка скрипта проста как пара копеек, просто отправляем сформированное письмо.
Не помню такой галочки OO На какие именно клиенты она влияет? OO
Зашла по VNC и глянула.
Content-Type: image/jpeg; name="gallery1.jpg"
Content-Disposition: attachment; filename="gallery1.jpg"
Content-Transfer-Encoding: base64
Это прямо в заголовке письма. Потом пустая строка и картинка в Base64.
Ее относительно недавно ввели.
На какие именно клиенты она влияет? OO
Вот веришь, я сам еще не разобрался с этим до конца. PSH скрипты под эту категорию попали, а вот какие еще проги могут отказать работать - пока без рулей.
Сам доступ настраивается в свойствах аккаунта Google: www.google.com/settings/security/lesssecureapps
imgur умеет только multipart/mixed
Найду, как в PSH изменить формат самого сообщения - проверю
У меня Вкл стоит OO
PSH скрипты под эту категорию попали, а вот какие еще проги могут отказать работать - пока без рулей.
Пришли мне письмо из скрипта. Я подозреваю, что PoSH на CDO полагается, с соответствующим X-Mailer.
Найду, как в PSH изменить формат самого сообщения - проверю
^^
Лови
Скорее всего я ошибаюсь ^^'
Помнишь, что я сказал относительно CDO? ^.^
Помнишь, что я сказал относительно CDO? ^.^
PoSH может внутрях его юзать OO
/* Честно гвооря, нет ^^' */
Линда Кайе (19:28:32 11/02/2015)
CDO ^^'
Hikedaya (19:28:39 11/02/2015)
НАФИГ!
Но вообще, PSH может и через CDO почту слать. Вот пример такого с технета:
Но это осталось в тех же временах, где остался Exchange 2003, ибо так обычно работали именно с ним.
X-Mailer: AJPapps - Simple mailer 1.01.0017
Content-Type: image/jpeg; name="B9i3lBHIEAAZgjl.jpg large.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="B9i3lBHIEAAZgjl.jpg large.jpg"
Content-Class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6090
X-Mailer моя программа устанавливает (вроде бы обёртка тоже это делает по дефолту, просто потом внешняя программа может дать своё значение. А вот X-MimeOLE остаётся то, что укажет CDO. Вот по нему "вирусы" и детектили.
К слову, когда-то письма отправленные через CDO называли "вирусы, использующие дырявый Аутлук".
Хм... не слышал о таком
Хм... не слышал о таком
В конце девяностых - начале нулевых было такое ^^
Это время моего студенчества. Тогда у меня доступ к инету был крайне ограничен, может быть даже более ограничен, чем у тебя. Потому и не слышал о таких зверях
А вот эти вещи в наших краях в те времена не светились