Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday, 1 October 2020

France’s Sendinblue, an all-in-one digital marketing platform, raises $160M

As more companies and brands put the internet at the core of how they run their businesses these days, it’s giving a strong push to the growth of startups that are building tools to help them. In the latest development, Sendinblue, an eight-year-old French startup that has built a platform to help small and medium organizations run all of their marketing — from email, SMS and chat marketing through to automation services, Facebook ads and retargeting — has picked up $160 million in funding.

Bridgepoint, Bpifrance, Blackrock, and previous investor Partech (which led Sendinblue’s $35 million in Series A in 2017) all invested in the round.

The money will be used to help the company build out its presence in North America — where it grew 100% last year — and to continue to add more tools to the mix, both organically and by positioning itself as a consolidator, acquiring smaller marketing tech startups. The company is also building CRM tools and other adjacent areas in the SMB back office so you can see how it might evolve. It’s profitable and is active already in some 60 countries with some 180,000 customers on its books.

The huge funding, for a startup that may not have been on many people’s radar — you could say Sendinblue has come out of the blue — is a sign of the times.

SMBs (like retailers and brands doubling down on e-commerce) have long used the internet for marketing, but the recent pandemic, with its social distancing measures, has highlighted just how many people are spending time (and spending money) online, which has led to a boost in how organizations are using the internet to communicate with customers.

“The whole covid pandemic has accelerated our business,” said Steffen Schebesta, who runs the company’s North American operations (and joined the company when his startup, Newsletter2Go, was acquired several years ago). “We’ve seen a lot of SMBs finding that they need to digitize in order to survive.”

It’s also notable that it’s a French startup raising a large growth round: it’s a signal of how companies from the country are scaling, filling out a mission that French President Emmanuel Macron set out to see the country produce (and invest in) more unicorns.

Sendinblue’s funding news comes on the heels of another French martech company, Sarbacane, also raising a lot of money in recent weeks (France has been known for adtech, but seems that it also has a strong line in marketing tech). Further afield, we’ve seen a number of other startups in the space raising significant rounds this year, including Yotpo, Movable Ink, Adverity, and more.

There seems to be room for all of these, and more. Schebesta described a typical customer for Sendinblue — whose primary goal is to “enable small and medium businesses to be on equal footing with bigger companies in terms of the tools they can use, having access to everything in one platform at an affordable price — as one that may have “outgrown” Mailchimp with a need for more tools and more sophistication. 

While the company’s bread and butter and focus will always be SMBs, in the meantime it’s also picked up a number of high-profile and high-end customers too, including Louis Vuitton, the candy giant Haribo, Fujitsu, Amnesty International and Greenpeace. 

“Sendinblue is positioned in a growing market as more and more SMBs are going digital, especially in the past few months of lockdown,” said Olivier Nemsguern, Partner at Bridgepoint, in a statement. “We seek investments that meet a critical market need. Sendinblue is the perfect example of a company that will make an impact.”

“We have invested in Sendinblue because the company offers innovative solutions for SMBs and has a strong track record of achieving high growth in the U.S. and European market,” added Louis Molis, investment director at Bpifrance. “We’ve seen that Sendinblue’s value is globally extensible and will increase in importance as integrated marketing becomes more important.”

“Sendinblue has quickly become the leading digital-marketing platform for SMBs,” said Bruno Crémel, General Partner at Partech. “As demand for all in one platforms increases, Sendinblue has a unique ability to succeed. We are thrilled to continue to support Sendinblue as the company accelerates its next phase of international growth.”



from TechCrunch https://ift.tt/3cXD7IR
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support