среда, 30 мая 2012 г.

Отправка письма через SMTP Google


var smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("LOGIN@gmail.com", "PASSWORD");
smtp.EnableSsl = true;
var msg = new MailMessage("FROM@gmail.com", " TO@gmail.com ", "test", "body");
smtp.Send(msg);

Порт 587, не 465!!! Как задолбало каждый раз попадать в одну и ту же ловушку с портом.


Для быстрой проверки можно через PowerShell:

$smtp = New-Object System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
$smtp.UseDefaultCredentials = "False";
$smtp.Credentials = New-Object System.Net.NetworkCredential("LOGIN@gmail.com", "PASSWORD");
$smtp.EnableSsl = "True";
$msg = New-Object System.Net.Mail.MailMessage("FROM@gmail.com", "TO@gmail.com", "test", "body");
$smtp.Send($msg);

вторник, 29 мая 2012 г.

Как посмотреть, где используется тип содержимого SharePoint

Бывает, что при удалении типа содержимого (content type) SharePoint 2007 вылезает ошибка:
Этот тип содержимого сейчас используется.
The content type is in use.


А вот где он используется - непонятно, средств посмотреть нет.
Как ни странно, в контентной БД (WSS_Content) есть процедуры для этого:
[proc_ListContentTypeInUse] 'SiteId', ContentTypeId

ContentTypeId получаем так:
Заходим в параметры узла, Коллекции -> Типы содержимого узла, заходим в нужный тип содержимого и смотрим URL.
http://portal/_layouts/ManageContentType.aspx?ctype=0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39&Source=http%3A%2F%2Fzdrav%2Emonitoring%2Dmsk%2Eru%2F%5Flayouts%2Fmngctype%2Easpx
Нас интересует значение ctype, это и есть ContentTypeId :
0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39

SiteId можно получить так:

SELECT SiteId, sys.fn_varbintohexstr(ContentTypeId) AS ID, WebId, ListId, IsFieldId, Class
FROM ContentTypeUsage
WHERE (sys.fn_varbintohexstr(ContentTypeId) LIKE '[ContentTypeID]%')

Выполняем:

SELECT SiteId, sys.fn_varbintohexstr(ContentTypeId) AS ID, WebId, ListId, IsFieldId, Class
FROM ContentTypeUsage
WHERE (sys.fn_varbintohexstr(ContentTypeId) LIKE '0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39%')

и получаем таблицу, где в первом столбце указаны SiteId где используется тип содержимого, они нам и нужны.

Всё, теперь выполняем proc_ListContentTypeInUse, например, так:
[proc_ListContentTypeInUse] 'C135DCB5-6116-4033-9140-44EEA2A45F31', 0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39


И мы видим, где используется искомый тип содержимого!



пятница, 11 мая 2012 г.

Embarcadero RAD Studio XE2



Понадобилось тут по леваку в Дельфи поработать, решил глянуть что Embarcadero там намутили за последние пару лет. Оказалось "ну нифига себе", а я то думал они там загибаются и еле ноги волочат.

Наконец:
  • 64 бита
  • MacOS (причём проект может быть один, только компилятор поменять)
  • Мобильные приложения (Android, iOS)
  • FireMonkey (аналог WPF)

Прям получается что охват-то пошире будет, чем у Visual Studio...

На удивление дело живёт и развивается, теперь посомтрим как всё запустится на Windows 8 для пущего извращения =)