Отправка сообщения с SMTP аутентификацией в C++ через libcurl

Возникла задачка на С++ отправлять email сообщения из программы.
Удивительно, но libcurl, который есть практически на любой nix системе позволяет это делать, причем и используя SMTP аутентификацию.
В сети есть примеры реализации отправки сообщения в основном на Си, мой пример пригодится тем, кто использует С++.


#include <curl/curl.h>
#include <iostream>
#include <string.h>
#include <string>
#include <queue>

using namespace std;

queue<string> init_message( string to, string from, string subj, string message ){

  queue<string> msg;
  string s = "To: " + to + "\n";
  msg.push( s );
  s = "From: " + from + "\n";
  msg.push( s );
  s = "Subject: " + subj + "\n";
  msg.push( s );
  s = "\n";
  msg.push( s );
  msg.push( message );
  return msg;
}

static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp){

  queue<string> *msg = (queue<string>*)userp;
  string s;
  if( msg->empty()){
    return 0;
  }
  else{
    s = msg->front();
    msg->pop();
  }

  memcpy(ptr, s.c_str(), s.size() );
  return s.size();
}


int main(){
  
  CURL *curl;
  CURLcode res;
  struct curl_slist *recipients = NULL;

  curl = curl_easy_init();
  string to = "<to@domain.com>";
  string from = "<from@domain.com>";
  string subject = "Test";
  string message = "Test message";

  queue<string> msg = init_message( to, from, subject, message );

  if( curl ){
    curl_easy_setopt(curl, CURLOPT_URL, "smtp://smtp.domain.com:25");
    curl_easy_setopt(curl, CURLOPT_USERNAME, "smtp_login");
    curl_easy_setopt(curl, CURLOPT_PASSWORD, "smtp_pass");
    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, from.c_str() );
    recipients = curl_slist_append(recipients, to.c_str() );
    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);

    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
    curl_easy_setopt(curl, CURLOPT_READDATA, &msg );

    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);

    res = curl_easy_perform(curl);
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
    
    curl_slist_free_all(recipients);
    curl_easy_cleanup(curl);

  }
  return 0;

}

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

Жизнь становится лучше, жизнь становится веселей.

Я веду свой небольшой бизнес в сети, веду легально и плачу налоги. В связи с тем, что наше правительство так заботится о судьбе малого и среднего бизнеса, приведу свои последние наблюдения в этой области от лица этого самого малого бизнеса.

Совершенная беда стала (она и была, но раньше хоть как-то можно было жить) с приемами платежей из-за границы. Нормального способа, как во всем цивилизованном мире, принимать платежи по кредитным картам на своем сайте так и не существует. Во-первых Paypal так и не работает в России (как и раньше): принимать деньги можно, но выводить их можно только в Американский банк. Есть способы получить американскую кредитку и получать деньги с нее в банкомате, но тогда возникает масса вопросов как отчитываться за такие деньги.


Дальше, существует замечательная платежная система «Робокасса» с которой у меня оформлены отношения, она занимается приемом и обработкой платежей всеми доступными ей способами, я получаю деньги на р/с в банке, плачу комиссию, правильно провожу эти деньги через бухгалтерию и плачу налоги. Однако, буквально в последний месяц-два клиенты постоянно жалуются на то, что не могут оплатить кредиткой через эту систему, хотя, как заявлено (и при оплате такой пункт есть) такая возможность есть. Причем, платежи не проходят не только из дальнего зарубежья, а уже и из ближнего, например Азербайджана, Украины, Казахстана.

Есть мысли, что сама «Робокасса» здесь не причем, а все это последствия закручивания гаек, создания национальной платежной системы и еще чего-либо крайне полезного для развития бизнеса, но на лицо обратный эффект.

Более того, раньше я думал что Мастеркард он и в Африке Мастеркард, и Виза с прочими — тоже, но, оказывается, в России имеет значение какого банка карта, откуда и куда Вы платите.

Пока приходится объяснять клиентам, что оплатить они не смогут, ввиду неизвестно чего и не известно что будет дальше. Никакой информации об этом нигде нет, запросы в тех поддержку «Робокассы» по поводу проблем с проведением платежей остаются не отвеченными. Ребята обычно отвечают оперативно, но создается впечатление что они сами не в курсе.

Я думаю у тех, кто гонет нефть и газ за границу проблем с приемами платежей из-за рубежа нет совсем, а вот если Вы хотите экспортировать IT услуги, например, то Вас ждут проблемы.

Еще одна хорошая новость — с 2013 года организации на упрощенке обязаны вести полный бухгалтерский учет, отличная помощь малому бизнесу — теперь им нужно вводить расходы на бухгалтера. Остается только радоваться тому, что для индивидуальных предпринимателей останется всё как прежде, но на долго ли?

Обновление Samsung Galaxy Note до Android 4.0 (Ice Cream Sandwitch)

Android 4.0 Ice Cream Sandwitch

Android 4.0 Ice Cream Sandwitch

22 мая мой тайский Galaxy Note, наконец, предложил обновился до последнего Android.

Обновление прошло гладко и без проблем (не смотря даже на то, что мне позвонили прямо во время скачивания обновления 🙂 ).

При обновлении Kies пишет, что обновление может улучшить производительность и прочее, честно говоря на производительность в душе рассчитываешь сильно, в целом заметного ускорения нет, скроллинг, пожалуй, более гладкий, но это это перекрывается недостатком, когда телефон иногда долго реагирует на некоторые действия, вроде запуска приложения или запуска клавиатуры когда нужно что-то напечатать.


В общем, пару дней я уже просуществовал в новом окружении и вот что удалось про него выяснить:

  1. Установилась версия Android 4.0.3
  2. После обновления пропали все мои иконки со всех рабочих столов и были установлены исходные иконки и виджеты.
  3. В приложениях я сортировал все программы по рабочим столам согласно их важности для меня — всё перемешалось обратно.
  4. В контакты попали все возможные мои контакты из Skype, Gmail и непонятно еще откуда, которые мне когда-либо писали, образовав кучу непонятных записей и полную невозможность найти людей. Несколько сотен записей, с которыми теперь нужно будет разбираться по отдельности и вспоминать кто это. Контакты с симки я вообще пока не могу найти в этой куче.
  5. Запомненные в «родном» браузере пароли сбросились.
  6. Сильно изменился клиент Gmail и очень приятная мелочь в нем поменялась — кнопка обновленя почты перемещена c левой на правую сторону и теперь удобнее до нее дотягиваться, держа Note в правой руке. Постоянно проверяю почту на телефоне, поэтому для меня очень полезная фича.
  7. Пропала очень удобная функция регулирования яркости экрана. Прикасаясь пальцем к верхней части экрана и проводя пальцев влево-право по полоске индикатора можно было уменьшать и увеличивать яркость, теперь этого нет.

В итоге жду новое обновление, после этого обновления, где поправят недоделки. Обидно, что с Android постоянно в душе ждешь, что вот-вот выйдет что-то новое и сделают, наконец, так, как тебе нужно…

 

Почта Тайланда: цена отправки посылок в Россию.

Тайская почта: цены

Тайская почта: цены

За время пребывания в Тайланде (пол года в нашем случае) накапливается много вещей, сувениров и прочего, и при возвращении домой всё это уместить в самолет не реально. Платить за перевес — очень дорого, например средняя стоимость килограмма перевеса при перелете из Тайланда в Москву — 30$. Провозить же разрешено до 23 килограмм на человека, если летите эконом классом. Поэтому, единственный вариант — это почта. Почтовые отделения есть почти на всех пляжах Пхукета. На фотографии можно посмотреть цены (цены в тайских батах, один бат — это один рубль по курсу):

  • первая слева колонка — вес
  • далее идет цена за отправку через EMS (экспресс почта)
  • авиа доставка
  • обычная почта

Отправляли мы посылки 3 раза. Первые два раза отправляли через EMS (10 и 5 кг), последний раз перед отлетом отправили две посылки по 12 килограмм обычной почтой, EMS стоил бы очень дорого. Смысл авиа почты не понятен — дороже EMS и идет дольше.


Сроки доставки посылки из Тайланда:

— При отправке через EMS посылки пришли через 2 недели (перед Новым Годом) и вторая пришла совсем быстро, через полторы недели.

— При отправке обычной почтой — около трех месяцев, пока еще ждем 🙂 Как доедет (если вообще доедет, привет таможне и Почте России) — обновлю пост. (обновляю — приехало всё через 2.5 месяца)

Лучше всего отправлять EMS, причем чем тяжелее — тем луше, в итоге получается дешевле. Коробки мы покупали на почте, потом шли упаковывали все вещи в них, возвращались на почту и отправляли. Доставляет EMS прямо домой до двери, что очень приятно.

Некоторые вещи пересылать почтой нельзя — например аэрозольные баллончики. При отправке на почте содержимое посылки не то что бы сильно проверяют, но осматривают. Различного рода жидкости и флаконы нужно тщательно запаковать, если нет упаковочного материала — на почте дадут.

Вообще тайская почта производит очень положительное впечатление — всё объяснят, помогут упаковать и расскажут. Время на обслуживание клиента не экономят, в зале находится менеджер приятной наружности и с приятным общением. Почте России до этого уровня еще очень делеко.

Samsung Galaxy Note. Впечатления спустя 2 месяца.

Спустя некоторое время работы со смартфоном четко могу сформулировать свои впечатления.
Где и как покупал смартфон и о первых моих ощущениях можно прочитать здесь.

Samsung Galaxy Note

Samsung Galaxy Note

Плюсы:

  1. Лично я считаю все эти сомнения и разговоры по поводу размера аппарата ерундой, отличный размер, за счет маленькой толщины аппарат достаточно элегантный. После Note аппарат размером, скажем, с iPhone, кажется несерьезной игрушкой.
  2. Хорошая производительность. Наконец чувствуешь на ведроиде шустрый отклик на свои действия.
  3. Батарейка живет достаточно долго для того, чтобы весь день (и даже два) чувствовать себя спокойно. Анекдот про то, что владельцы андроида не ездят в электричке, потому что в ней нет розеток, надеюсь, скоро уйдет в прошлое.
  4. Первоклассно снимает видео, если видео потом просматривать на экране телефона — цвета совершенно потрясающие.
  5. Очень крепкий корпус. Падения на асфальт из рук, особенно в чехле переживает спокойно, проверял.
  6. Стилус, ура! Давно его не использовал, еще с момента отмирания КПК как вида. Не могу сказать, что использую его именно так, как показывает самсунг в своих роликах. Обводить что-то на картах с пометкой meet here не приходилось, какие-то заметки к скриншотам тоже, ну а рисую я вообще не важно. Однако, чтобы набирать текст (этот пост написан стилусом полностью в WordPress клиенте для Android) или пользоваться телефоном не заляпывая его супер экран — самое оно. На ходу действительно проще открыть заметки и написать что-то от руки стилусом по экрану, пусть коряво, все равно потом поймешь, что имел ввиду.
  7. По сравнению с навигацией в предыдущих моих телефонах, эта работает заметно быстрее (ГЛОНАСС?).
  8. Вспышка, которую можно использовать как фонарик, лупит как 3-4 свето-брелка или один хороший светодиодный фонарик.


Минусы:

  1. Samsung Kies иногда не видит подключенный аппарат. Один раз пришлось сделать master reset, чтобы аппарат начал определяться. То же бывало и с Galaxy Tab 10.1, так что недостаток не самого аппарата, а исключительно Kies.
  2. «Аппаратные» кнопки не нажимаются стилусом, поразительная недоделка со стороны Samsung.
    UPDATE: как оказалось, нажатие аппаратных кнопок можно сэмулировать зажав кнопку на стилусе. Если зажать кнопку и провести по экрану снизу вверх — появляется системное меню, а если справа налево — сработает кнопка «Назад».
  3. Пока так и не вышел Andtoid Ice Cream Sandwitch для него. Недостаток из разряда «висит груша — нельзя скушать». Вроде как сама новая ОС уже есть и даже давно, но официального обновления всё нет. Хотя, со своими задачами аппарат и так справляется, не думаю что после обновления разница будет разительная. Разве что гугл еще больше будет навязывать свой поиск и крест (Google Plus).
Внешняя трубка для Samsung Galaxy Note

Внешняя трубка для Samsung Galaxy Note

Обязательно советую чехол, так как аппарат может выскользнуть из рук.
Дополнительно себе купил внешнюю трубку. Смешной и забавный гаджет оказался на удивление удобным и востребованным, когда используешь телефон в стационарных условиях, скажем, дома сидя за рабочим столом. Забытая фраза «Алло, на проводе» вновь приобретает актуальность.